From 186b4ebc99a2e80740fee51f9d0276886a003617 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Thu, 30 Jan 2014 13:46:42 +0200 Subject: convert specialised SvStream::operator>> methods to ReadXXX methods as preparation for converting the SvStream::operator>> methods on primitive types Change-Id: I62f134bced15c687d6e0d46924f56e8d1c3d95b9 Reviewed-on: https://gerrit.libreoffice.org/7798 Tested-by: LibreOffice gerrit bot Reviewed-by: Michael Stahl --- vcl/source/filter/graphicfilter.cxx | 6 ++-- vcl/source/filter/graphicfilter2.cxx | 4 +-- vcl/source/filter/sgfbram.cxx | 18 +++++------ vcl/source/filter/sgfbram.hxx | 6 ++-- vcl/source/filter/sgvmain.cxx | 58 ++++++++++++++++++------------------ vcl/source/filter/sgvmain.hxx | 22 +++++++------- vcl/source/filter/wmf/winmtf.hxx | 2 -- 7 files changed, 57 insertions(+), 59 deletions(-) (limited to 'vcl/source/filter') diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index 67e1d2bc1700..a1a731eeaed3 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -1573,13 +1573,13 @@ sal_uInt16 GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPat aFilterName.equalsIgnoreAsciiCase( IMP_SVMETAFILE ) ) { // SV internal filters for import bitmaps and MetaFiles - rIStream >> rGraphic; + ReadGraphic( rIStream, rGraphic ); if( rIStream.GetError() ) nStatus = GRFILTER_FORMATERROR; } else if( aFilterName.equalsIgnoreAsciiCase( IMP_MOV ) ) { - rIStream >> rGraphic; + ReadGraphic( rIStream, rGraphic ); if( rIStream.GetError() ) nStatus = GRFILTER_FORMATERROR; else @@ -1620,7 +1620,7 @@ sal_uInt16 GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPat else { aTempStream.Seek( 0L ); - aTempStream >> rGraphic; + ReadGraphic( aTempStream, rGraphic ); if( aTempStream.GetError() ) nStatus = GRFILTER_FILTERERROR; diff --git a/vcl/source/filter/graphicfilter2.cxx b/vcl/source/filter/graphicfilter2.cxx index 352e4de56c96..c2d169e06d93 100644 --- a/vcl/source/filter/graphicfilter2.cxx +++ b/vcl/source/filter/graphicfilter2.cxx @@ -1065,8 +1065,8 @@ sal_Bool GraphicDescriptor::ImpDetectSVM( SvStream& rStm, sal_Bool bExtendedInfo MapMode aMapMode; rStm.SeekRel( 0x06 ); - rStm >> aMapMode; - rStm >> aLogSize; + ReadMapMode( rStm, aMapMode ); + ReadPair( rStm, aLogSize ); aLogSize = OutputDevice::LogicToLogic( aLogSize, aMapMode, MapMode( MAP_100TH_MM ) ); } } diff --git a/vcl/source/filter/sgfbram.cxx b/vcl/source/filter/sgfbram.cxx index 92a4334ce129..c9ac38865640 100644 --- a/vcl/source/filter/sgfbram.cxx +++ b/vcl/source/filter/sgfbram.cxx @@ -27,7 +27,7 @@ #include "sgffilt.hxx" #include "sgfbram.hxx" -SvStream& operator>>(SvStream& rIStream, SgfHeader& rHead) +SvStream& ReadSgfHeader(SvStream& rIStream, SgfHeader& rHead) { rIStream.Read((char*)&rHead.Magic,SgfHeaderSize); #if defined OSL_BIGENDIAN @@ -52,7 +52,7 @@ bool SgfHeader::ChkMagic() sal_uInt32 SgfHeader::GetOffset() { return sal_uInt32(OfsLo)+0x00010000*sal_uInt32(OfsHi); } -SvStream& operator>>(SvStream& rIStream, SgfEntry& rEntr) +SvStream& ReadSgfEntry(SvStream& rIStream, SgfEntry& rEntr) { rIStream.Read((char*)&rEntr.Typ,SgfEntrySize); #if defined OSL_BIGENDIAN @@ -69,7 +69,7 @@ SvStream& operator>>(SvStream& rIStream, SgfEntry& rEntr) sal_uInt32 SgfEntry::GetOffset() { return sal_uInt32(OfsLo)+0x00010000*sal_uInt32(OfsHi); } -SvStream& operator>>(SvStream& rIStream, SgfVector& rVect) +SvStream& ReadSgfVector(SvStream& rIStream, SgfVector& rVect) { rIStream.Read((char*)&rVect,sizeof(rVect)); #if defined OSL_BIGENDIAN @@ -337,13 +337,13 @@ bool SgfBMapFilter(SvStream& rInp, SvStream& rOut) bool bRet=false; // return value nFileStart=rInp.Tell(); - rInp>>aHead; + ReadSgfHeader( rInp, aHead ); if (aHead.ChkMagic() && (aHead.Typ==SgfBitImag0 || aHead.Typ==SgfBitImag1 || aHead.Typ==SgfBitImag2 || aHead.Typ==SgfBitImgMo)) { nNext=aHead.GetOffset(); while (nNext && !bRdFlag && !rInp.GetError() && !rOut.GetError()) { rInp.Seek(nFileStart+nNext); - rInp>>aEntr; + ReadSgfEntry( rInp, aEntr ); nNext=aEntr.GetOffset(); if (aEntr.Typ==aHead.Typ) { bRdFlag=true; @@ -415,7 +415,7 @@ bool SgfFilterVect(SvStream& rInp, SgfHeader& rHead, SgfEntry&, GDIMetaFile& rMt aOutDev.SetFillColor(Color(COL_BLACK)); while (!bEoDt && !rInp.GetError()) { - rInp>>aVect; RecNr++; + ReadSgfVector( rInp, aVect ); RecNr++; nFarb=(sal_uInt8) (aVect.Flag & 0x000F); nLTyp=(sal_uInt8)((aVect.Flag & 0x00F0) >>4); nOTyp=(sal_uInt8)((aVect.Flag & 0x0F00) >>8); @@ -472,12 +472,12 @@ bool SgfVectFilter(SvStream& rInp, GDIMetaFile& rMtf) bool bRet=false; // return value nFileStart=rInp.Tell(); - rInp>>aHead; + ReadSgfHeader( rInp, aHead ); if (aHead.ChkMagic() && aHead.Typ==SGF_SIMPVECT) { nNext=aHead.GetOffset(); while (nNext && !rInp.GetError()) { rInp.Seek(nFileStart+nNext); - rInp>>aEntr; + ReadSgfEntry( rInp, aEntr ); nNext=aEntr.GetOffset(); if (aEntr.Typ==aHead.Typ) { bRet=SgfFilterVect(rInp,aHead,aEntr,rMtf); @@ -509,7 +509,7 @@ sal_uInt8 CheckSgfTyp(SvStream& rInp, sal_uInt16& nVersion) SgfHeader aHead; nVersion=0; nPos=rInp.Tell(); - rInp>>aHead; + ReadSgfHeader( rInp, aHead ); rInp.Seek(nPos); if (aHead.ChkMagic()) { nVersion=aHead.Version; diff --git a/vcl/source/filter/sgfbram.hxx b/vcl/source/filter/sgfbram.hxx index 1af6f56ef815..cd34217edc9c 100644 --- a/vcl/source/filter/sgfbram.hxx +++ b/vcl/source/filter/sgfbram.hxx @@ -56,7 +56,7 @@ public: sal_uInt16 OfsLo,OfsHi; // DWord allignment is necessary (38 mod 4 =2) ! sal_uInt32 GetOffset(); - friend SvStream& operator>>(SvStream& rIStream, SgfHeader& rHead); + friend SvStream& ReadSgfHeader(SvStream& rIStream, SgfHeader& rHead); bool ChkMagic(); }; @@ -71,7 +71,7 @@ public: sal_uInt16 OfsLo,OfsHi; // DWord allignment is necessary (18 mod 4 =2) ! sal_uInt32 GetOffset(); - friend SvStream& operator>>(SvStream& rIStream, SgfEntry& rEntr); + friend SvStream& ReadSgfEntry(SvStream& rIStream, SgfEntry& rEntr); }; #define SgfVectorSize 10 @@ -83,7 +83,7 @@ public: sal_Int16 y; sal_uInt16 OfsLo,OfsHi; // DWord allignment is necessary (6 mod 4 =2) ! - friend SvStream& operator>>(SvStream& rIStream, SgfVector& rEntr); + friend SvStream& ReadSgfVector(SvStream& rIStream, SgfVector& rEntr); }; extern long SgfVectXofs; diff --git a/vcl/source/filter/sgvmain.cxx b/vcl/source/filter/sgvmain.cxx index f6eb1ee98bc9..7b4648e03fea 100644 --- a/vcl/source/filter/sgvmain.cxx +++ b/vcl/source/filter/sgvmain.cxx @@ -144,7 +144,7 @@ sal_uInt16 MulDiv(sal_uInt16 a, sal_uInt16 Mul, sal_uInt16 Div) // SgfFilterSDrw /////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// -SvStream& operator>>(SvStream& rIStream, DtHdType& rDtHd) +SvStream& ReadDtHdType(SvStream& rIStream, DtHdType& rDtHd) { rIStream.Read((char*)&rDtHd.Reserved[0],DtHdSize); return rIStream; @@ -158,7 +158,7 @@ void DtHdOverSeek(SvStream& rInp) } -SvStream& operator>>(SvStream& rIStream, PageType& rPage) +SvStream& ReadPageType(SvStream& rIStream, PageType& rPage) { rIStream.Read((char*)&rPage.Next,PageSize); #if defined OSL_BIGENDIAN @@ -174,7 +174,7 @@ void ObjkOverSeek(SvStream& rInp, ObjkType& rObjk) rInp.Seek(rInp.Tell()+Siz); } -SvStream& operator>>(SvStream& rInp, ObjkType& rObjk) +SvStream& ReadObjkType(SvStream& rInp, ObjkType& rObjk) { // fileposition in stream is not changed! sal_uLong nPos; @@ -193,7 +193,7 @@ SvStream& operator>>(SvStream& rInp, ObjkType& rObjk) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, StrkType& rStrk) +SvStream& ReadStrkType(SvStream& rInp, StrkType& rStrk) { rInp.Read((char*)&rStrk.Last,StrkSize); #if defined OSL_BIGENDIAN @@ -204,7 +204,7 @@ SvStream& operator>>(SvStream& rInp, StrkType& rStrk) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, RectType& rRect) +SvStream& ReadRectType(SvStream& rInp, RectType& rRect) { rInp.Read((char*)&rRect.Last,RectSize); #if defined OSL_BIGENDIAN @@ -219,7 +219,7 @@ SvStream& operator>>(SvStream& rInp, RectType& rRect) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, PolyType& rPoly) +SvStream& ReadPolyType(SvStream& rInp, PolyType& rPoly) { rInp.Read((char*)&rPoly.Last,PolySize); #if defined OSL_BIGENDIAN @@ -229,7 +229,7 @@ SvStream& operator>>(SvStream& rInp, PolyType& rPoly) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, SplnType& rSpln) +SvStream& ReadSplnType(SvStream& rInp, SplnType& rSpln) { rInp.Read((char*)&rSpln.Last,SplnSize); #if defined OSL_BIGENDIAN @@ -239,7 +239,7 @@ SvStream& operator>>(SvStream& rInp, SplnType& rSpln) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, CircType& rCirc) +SvStream& ReadCircType(SvStream& rInp, CircType& rCirc) { rInp.Read((char*)&rCirc.Last,CircSize); #if defined OSL_BIGENDIAN @@ -254,7 +254,7 @@ SvStream& operator>>(SvStream& rInp, CircType& rCirc) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, TextType& rText) +SvStream& ReadTextType(SvStream& rInp, TextType& rText) { rInp.Read((char*)&rText.Last,TextSize); #if defined OSL_BIGENDIAN @@ -272,7 +272,7 @@ SvStream& operator>>(SvStream& rInp, TextType& rText) rText.Buffer=NULL; return rInp; } -SvStream& operator>>(SvStream& rInp, BmapType& rBmap) +SvStream& ReadBmapType(SvStream& rInp, BmapType& rBmap) { rInp.Read((char*)&rBmap.Last,BmapSize); #if defined OSL_BIGENDIAN @@ -286,7 +286,7 @@ SvStream& operator>>(SvStream& rInp, BmapType& rBmap) #endif return rInp; } -SvStream& operator>>(SvStream& rInp, GrupType& rGrup) +SvStream& ReadGrupType(SvStream& rInp, GrupType& rGrup) { rInp.Read((char*)&rGrup.Last,GrupSize); #if defined OSL_BIGENDIAN @@ -768,15 +768,15 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) sal_uInt16 nGrpCnt=0; bool bEnde=false; do { - rInp>>aObjk; + ReadObjkType( rInp, aObjk ); if (!rInp.GetError()) { switch(aObjk.Art) { - case ObjStrk: { StrkType aStrk; rInp>>aStrk; if (!rInp.GetError()) aStrk.Draw(rOut); } break; - case ObjRect: { RectType aRect; rInp>>aRect; if (!rInp.GetError()) aRect.Draw(rOut); } break; - case ObjCirc: { CircType aCirc; rInp>>aCirc; if (!rInp.GetError()) aCirc.Draw(rOut); } break; + case ObjStrk: { StrkType aStrk; ReadStrkType( rInp, aStrk ); if (!rInp.GetError()) aStrk.Draw(rOut); } break; + case ObjRect: { RectType aRect; ReadRectType( rInp, aRect ); if (!rInp.GetError()) aRect.Draw(rOut); } break; + case ObjCirc: { CircType aCirc; ReadCircType( rInp, aCirc ); if (!rInp.GetError()) aCirc.Draw(rOut); } break; case ObjText: { TextType aText; - rInp>>aText; + ReadTextType( rInp, aText ); if (!rInp.GetError()) { aText.Buffer=new UCHAR[aText.BufSize+1]; // add one for LookAhead at CK-separation rInp.Read((char* )aText.Buffer,aText.BufSize); @@ -786,14 +786,14 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) } break; case ObjBmap: { BmapType aBmap; - rInp>>aBmap; + ReadBmapType( rInp, aBmap ); if (!rInp.GetError()) { aBmap.Draw(rOut); } } break; case ObjPoly: { PolyType aPoly; - rInp>>aPoly; + ReadPolyType( rInp, aPoly ); if (!rInp.GetError()) { aPoly.EckP=new PointType[aPoly.nPoints]; rInp.Read((char*)aPoly.EckP,4*aPoly.nPoints); @@ -806,7 +806,7 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) } break; case ObjSpln: { SplnType aSpln; - rInp>>aSpln; + ReadSplnType( rInp, aSpln ); if (!rInp.GetError()) { aSpln.EckP=new PointType[aSpln.nPoints]; rInp.Read((char*)aSpln.EckP,4*aSpln.nPoints); @@ -819,7 +819,7 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) } break; case ObjGrup: { GrupType aGrup; - rInp>>aGrup; + ReadGrupType( rInp, aGrup ); if (!rInp.GetError()) { rInp.Seek(rInp.Tell()+aGrup.Last); // object appendix if(aGrup.GetSubPtr()!=0L) nGrpCnt++; // DrawObjkList(rInp,rOut ); @@ -852,10 +852,10 @@ void SkipObjkList(SvStream& rInp) ObjkType aObjk; do { - rInp>>aObjk; + ReadObjkType( rInp, aObjk ); if(aObjk.Art==ObjGrup) { GrupType aGrup; - rInp>>aGrup; + ReadGrupType( rInp, aGrup ); rInp.Seek(rInp.Tell()+aGrup.Last); // object appendix if(aGrup.GetSubPtr()!=0L) SkipObjkList(rInp); } else { @@ -884,28 +884,28 @@ bool SgfFilterSDrw( SvStream& rInp, SgfHeader&, SgfEntry&, GDIMetaFile& rMtf ) nStdPos=rInp.Tell(); do { // read standard page - rInp>>aPage; + ReadPageType( rInp, aPage ); if (aPage.nList!=0) SkipObjkList(rInp); } while (aPage.Next!=0L && !rInp.GetError()); // ShowMsg("Drawingpage(n)\n"); nZchPos=rInp.Tell(); - rInp>>aPage; + ReadPageType( rInp, aPage ); rMtf.Record(pOutDev); Num=aPage.StdPg; if (Num!=0) { rInp.Seek(nStdPos); while(Num>1 && aPage.Next!=0L && !rInp.GetError()) { // search standard page - rInp>>aPage; + ReadPageType( rInp, aPage ); if (aPage.nList!=0) SkipObjkList(rInp); Num--; } - rInp>>aPage; + ReadPageType( rInp, aPage ); if(Num==1 && aPage.nList!=0L) DrawObjkList( rInp,*pOutDev ); rInp.Seek(nZchPos); nZchPos=rInp.Tell(); - rInp>>aPage; + ReadPageType( rInp, aPage ); } if (aPage.nList!=0L) DrawObjkList(rInp,*pOutDev ); @@ -943,12 +943,12 @@ bool SgfSDrwFilter(SvStream& rInp, GDIMetaFile& rMtf, INetURLObject aIniPath ) pSgfFonts->AssignFN( aIniPath.GetMainURL( INetURLObject::NO_DECODE ) ); nFileStart=rInp.Tell(); - rInp>>aHead; + ReadSgfHeader( rInp, aHead ); if (aHead.ChkMagic() && aHead.Typ==SgfStarDraw && aHead.Version==SGV_VERSION) { nNext=aHead.GetOffset(); while (nNext && !rInp.GetError()) { rInp.Seek(nFileStart+nNext); - rInp>>aEntr; + ReadSgfEntry( rInp, aEntr ); nNext=aEntr.GetOffset(); if (aEntr.Typ==aHead.Typ) { bRet=SgfFilterSDrw( rInp,aHead,aEntr,rMtf ); diff --git a/vcl/source/filter/sgvmain.hxx b/vcl/source/filter/sgvmain.hxx index 8dbc5955bb2d..3c58f128e512 100644 --- a/vcl/source/filter/sgvmain.hxx +++ b/vcl/source/filter/sgvmain.hxx @@ -37,7 +37,7 @@ struct PointType { class DtHdType { public: sal_uInt8 Reserved[256]; - friend SvStream& operator>>(SvStream& rIStream, DtHdType& rDtHd); + friend SvStream& ReadDtHdType(SvStream& rIStream, DtHdType& rDtHd); friend void DtHdOverSeek(SvStream& rInp); }; @@ -66,7 +66,7 @@ public: sal_uInt8 LnAnzH; sal_uInt8 LnAnzV; UCHAR PgName[32]; // page name - friend SvStream& operator>>(SvStream& rIStream, PageType& rPage); + friend SvStream& ReadPageType(SvStream& rIStream, PageType& rPage); }; enum ObjArtType {ObjStrk,ObjRect,ObjPoly,ObjCirc,ObjSpln, @@ -137,7 +137,7 @@ public: PointType ObjMax; // XY maximum of the object sal_uInt8 Art; sal_uInt8 Layer; - friend SvStream& operator>>(SvStream& rIStream, ObjkType& rObjk); + friend SvStream& ReadObjkType(SvStream& rIStream, ObjkType& rObjk); friend sal_Bool ObjOverSeek(SvStream& rInp, ObjkType& rObjk); virtual void Draw(OutputDevice& rOut); }; @@ -150,7 +150,7 @@ public: ObjLineType L; PointType Pos1; // start point PointType Pos2; // end point - friend SvStream& operator>>(SvStream& rIStream, StrkType& rStrk); + friend SvStream& ReadStrkType(SvStream& rIStream, StrkType& rStrk); virtual void Draw(OutputDevice& rOut); }; @@ -166,7 +166,7 @@ public: sal_Int16 Radius; // radius of corner sal_uInt16 DrehWink; // 315...<45 sal_uInt16 Slant; // >270...<90 - friend SvStream& operator>>(SvStream& rIStream, RectType& rRect); + friend SvStream& ReadRectType(SvStream& rIStream, RectType& rRect); virtual void Draw(OutputDevice& rOut); }; @@ -181,7 +181,7 @@ public: sal_uInt8 Reserve; sal_uInt32 SD_EckP; // pointer to corner point (StarDraw) PointType* EckP; // pointer to corner points (StarView (is not read from disk!)) - friend SvStream& operator>>(SvStream& rIStream, PolyType& rPoly); + friend SvStream& ReadPolyType(SvStream& rIStream, PolyType& rPoly); virtual void Draw(OutputDevice& rOut); }; #define PolyClosBit 0x01 // kinds of Poly: 0: polyLine 1: polygon @@ -197,7 +197,7 @@ public: sal_uInt8 Reserve; sal_uInt32 SD_EckP; // pointer to corner points (StarDraw) PointType* EckP; // pointer to corner points (StarView (is not read from disk!)) - friend SvStream& operator>>(SvStream& rIStream, SplnType& rSpln); + friend SvStream& ReadSplnType(SvStream& rIStream, SplnType& rSpln); virtual void Draw(OutputDevice& rOut); }; // kinds of Spline: see Poly @@ -214,7 +214,7 @@ public: sal_uInt16 DrehWink; // only ellipses sal_uInt16 StartWink; // and not for full circles sal_uInt16 RelWink; // and full ellipses - friend SvStream& operator>>(SvStream& rIStream, CircType& rCirc); + friend SvStream& ReadCircType(SvStream& rIStream, CircType& rCirc); virtual void Draw(OutputDevice& rOut); }; #define CircFull 0x00 /* kinds of circle: 0: full circle */ @@ -239,7 +239,7 @@ public: PointType FitSize; // size of origin for Fit2Size sal_Int16 FitBreit; // width to format for Fit2Size UCHAR* Buffer; // this variable is not set by reading from disk, but explicit! - friend SvStream& operator>>(SvStream& rIStream, TextType& rText); + friend SvStream& ReadTextType(SvStream& rIStream, TextType& rText); virtual void Draw(OutputDevice& rOut); }; #define TextOutlBit 0x01 /* 1=Sourcecode for outliner (ignored byDrawObjekt()) */ @@ -269,7 +269,7 @@ public: sal_Bool LightOut; // brighten? (SD20) sal_uInt8 GrfFlg; // (SD20) 0=nSGF 1=Pcx 2=HPGL 4=Raw $FF=Undef (to fix DrawBmp) INetURLObject aFltPath; // for GraphicFilter - friend SvStream& operator>>(SvStream& rIStream, BmapType& rBmap); + friend SvStream& ReadBmapType(SvStream& rIStream, BmapType& rBmap); virtual void Draw(OutputDevice& rOut); void SetPaths( const INetURLObject rFltPath ); }; @@ -284,7 +284,7 @@ public: sal_uInt16 ChartSize; // required amount of memory for structure of diagram structure sal_uInt32 ChartPtr; // diagram structure sal_uInt32 GetSubPtr(); // only to check if Sublist is empty - friend SvStream& operator>>(SvStream& rIStream, GrupType& rGrup); + friend SvStream& ReadGrupType(SvStream& rIStream, GrupType& rGrup); }; void SetLine(ObjLineType& rLine, OutputDevice& rOut); diff --git a/vcl/source/filter/wmf/winmtf.hxx b/vcl/source/filter/wmf/winmtf.hxx index 9db92458cb24..dcb0b8641280 100644 --- a/vcl/source/filter/wmf/winmtf.hxx +++ b/vcl/source/filter/wmf/winmtf.hxx @@ -460,8 +460,6 @@ struct XForm eM11 = eM22 = 1.0f; eDx = eDy = eM12 = eM21 = 0.0f; } - - friend SvStream& operator>>( SvStream& rIn, XForm& rXForm ); }; // ----------------------------------------------------------------------------- -- cgit