LCOV - code coverage report
Current view: top level - sc/source/filter/lotus - lotform.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 387 0.0 %
Date: 2012-08-25 Functions: 0 15 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 539 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #include "decl.h"
      30                 :            : #include "lotform.hxx"
      31                 :            : #include "compiler.hxx"
      32                 :            : #include "lotrange.hxx"
      33                 :            : #include "namebuff.hxx"
      34                 :            : #include "root.hxx"
      35                 :            : #include "ftools.hxx"
      36                 :            : #include "tool.h"
      37                 :            : 
      38                 :            : #include <math.h>
      39                 :            : #include <comphelper/string.hxx>
      40                 :            : 
      41                 :            : extern WKTYP                eTyp;
      42                 :            : 
      43                 :            : static const sal_Char*      GetAddInName( const sal_uInt8 nIndex );
      44                 :            : 
      45                 :            : static DefTokenId           lcl_KnownAddIn(const rtl::OString& rTest);
      46                 :            : 
      47                 :            : //extern double decipher_Number123( sal_uInt32 nValue );
      48                 :            : 
      49                 :            : 
      50                 :          0 : void LotusToSc::DoFunc( DefTokenId eOc, sal_uInt8 nAnz, const sal_Char* pExtString )
      51                 :            : {
      52         [ #  # ]:          0 :     TokenId                     eParam[ 256 ];
      53                 :            :     sal_Int32                       nLauf;
      54                 :          0 :     TokenId                     nMerk0, nMerk1;
      55                 :            : 
      56                 :          0 :     sal_Bool                        bAddIn = false;
      57                 :          0 :     sal_Bool                        bNeg = false;
      58                 :            : 
      59                 :            :     OSL_ENSURE( nAnz < 128, "-LotusToSc::DoFunc(): Neee! -so viel kann ich nicht!" );
      60                 :            : 
      61         [ #  # ]:          0 :     if( eOc == ocNoName )
      62                 :            :     {
      63                 :          0 :         rtl::OString t;
      64         [ #  # ]:          0 :         if( pExtString )
      65                 :            :         {
      66                 :          0 :             const rtl::OString s(RTL_CONSTASCII_STRINGPARAM("@<<@123>>"));
      67                 :            : 
      68                 :          0 :             t = pExtString;
      69                 :            : 
      70                 :          0 :             sal_Int32 n = t.indexOf(s);
      71         [ #  # ]:          0 :             if( n != -1 )
      72                 :          0 :                 t = t.copy(n + s.getLength());
      73                 :            : 
      74         [ #  # ]:          0 :             t = comphelper::string::stripEnd(t, '(');
      75                 :            : 
      76         [ #  # ]:          0 :             eOc = lcl_KnownAddIn( t );
      77                 :            : 
      78         [ #  # ]:          0 :             if( eOc == ocNoName )
      79                 :          0 :                 t = rtl::OString(RTL_CONSTASCII_STRINGPARAM("L123_")) + t;
      80                 :            :         }
      81                 :            :         else
      82                 :          0 :             t = "#UNKNOWN FUNC NAME#";
      83                 :            : 
      84         [ #  # ]:          0 :         if( eOc == ocNoName )
      85                 :            :         {
      86                 :          0 :             bAddIn = sal_True;
      87 [ #  # ][ #  # ]:          0 :             nMerk0 = aPool.Store(eOc, rtl::OStringToOUString(t, eSrcChar));
         [ #  # ][ #  # ]
      88                 :            : 
      89         [ #  # ]:          0 :             aPool << nMerk0;
      90                 :          0 :         }
      91                 :            :     }
      92                 :            : 
      93         [ #  # ]:          0 :     for( nLauf = 0 ; nLauf < nAnz ; nLauf++ )
      94                 :          0 :         aStack >> eParam[ nLauf ];
      95                 :            : 
      96                 :            :     // Spezialfaelle...
      97   [ #  #  #  #  :          0 :     switch( eOc )
             #  #  #  # ]
      98                 :            :     {
      99                 :            :         case ocIndex:
     100                 :            :             OSL_ENSURE( nAnz > 2, "+LotusToSc::DoFunc(): ocIndex braucht mind. 2 Parameter!" );
     101                 :          0 :             nMerk0 = eParam[ 0 ];
     102                 :          0 :             eParam[ 0 ] = eParam[ 1 ];
     103                 :          0 :             eParam[ 1 ] = nMerk0;
     104         [ #  # ]:          0 :             IncToken( eParam[ 0 ] );
     105         [ #  # ]:          0 :             IncToken( eParam[ 1 ] );
     106                 :          0 :             break;
     107                 :            :         case ocIRR:
     108                 :            :         {
     109                 :            :             OSL_ENSURE( nAnz == 2, "+LotusToSc::DoFunc(): ocIRR hat nur 2 Parameter!" );
     110                 :          0 :             nMerk0 = eParam[ 0 ];
     111                 :          0 :             eParam[ 0 ] = eParam[ 1 ];
     112                 :          0 :             eParam[ 1 ] = nMerk0;
     113                 :            :         }
     114                 :          0 :             break;
     115                 :            :         case ocGetYear:
     116                 :            :         {
     117         [ #  # ]:          0 :             nMerk0 = aPool.Store( 1900.0 );
     118         [ #  # ]:          0 :             aPool << ocOpen;
     119                 :            :         }
     120                 :          0 :             break;
     121                 :            :         case ocChose:
     122                 :            :         {// 1. Parameter ++
     123         [ #  # ]:          0 :             if (nAnz >= 1)
     124         [ #  # ]:          0 :                 IncToken( eParam[ nAnz - 1 ] );
     125                 :            :         }
     126                 :          0 :             break;
     127                 :            :         case ocFind:
     128                 :            :         case ocHLookup:
     129                 :            :         case ocVLookup:
     130                 :            :         {// letzten Parameter ++
     131         [ #  # ]:          0 :             IncToken( eParam[ 0 ] );
     132                 :            :         }
     133                 :          0 :             break;
     134                 :            :         case ocMid:
     135                 :            :         case ocReplace:
     136                 :            :         {// 2. Parameter ++
     137         [ #  # ]:          0 :             if (nAnz >= 2)
     138         [ #  # ]:          0 :                 IncToken( eParam[ nAnz - 2 ] );
     139                 :            :         }
     140                 :          0 :             break;
     141                 :            :         case ocZins:
     142                 :            :         {
     143                 :            :             // neue Anzahl = 4!
     144                 :            :             OSL_ENSURE( nAnz == 3,
     145                 :            :                 "*LotusToSc::DoFunc(): ZINS() hat 3 Parameter!" );
     146                 :          0 :             nAnz = 4;
     147                 :          0 :             eParam[ 3 ] = eParam[ 0 ];  // 3. -> 1.
     148                 :          0 :             eParam[ 0 ] = eParam[ 2 ];  // 1. -> 4.
     149         [ #  # ]:          0 :             NegToken( eParam[ 1 ] );    // 2. -> -2. (+ 2. -> 3.)
     150                 :          0 :             eParam[ 2 ] = n0Token;      //    -> 2. als Default
     151                 :            :         }
     152                 :          0 :             break;
     153                 :            :         default:;
     154                 :            :     }
     155                 :            :     // ................
     156                 :            : 
     157                 :            : 
     158         [ #  # ]:          0 :     if( !bAddIn )
     159         [ #  # ]:          0 :         aPool << eOc;
     160                 :            : 
     161         [ #  # ]:          0 :     aPool << ocOpen;
     162                 :            : 
     163         [ #  # ]:          0 :     if( nAnz > 0 )
     164                 :            :     {
     165                 :            :             // ACHTUNG: 0 ist der letzte Parameter, nAnz-1 der erste
     166                 :            : 
     167                 :          0 :         sal_Int16 nLast = nAnz - 1;
     168                 :            : 
     169         [ #  # ]:          0 :         if( eOc == ocRMZ )
     170                 :            :         {   // Extrawurst ocRMZ letzter Parameter negiert!
     171                 :            :             // zusaetzlich: 1. -> 3., 3. -> 2., 2. -> 1.
     172                 :            :             OSL_ENSURE( nAnz == 3,
     173                 :            :                 "+LotusToSc::DoFunc(): ocRMZ hat genau 3 Parameter!" );
     174 [ #  # ][ #  # ]:          0 :             aPool << eParam[ 1 ] << ocSep << eParam[ 0 ] << ocSep
         [ #  # ][ #  # ]
     175 [ #  # ][ #  # ]:          0 :                 << ocNegSub << eParam[ 2 ];
     176                 :            :         }
     177                 :            :         else
     178                 :            :         {   // Normalfall
     179                 :            :             // [Parameter{;Parameter}]
     180         [ #  # ]:          0 :             aPool << eParam[ nLast ];
     181                 :            : 
     182                 :          0 :             sal_Int16 nNull = -1;   // gibt einen auszulassenden Parameter an
     183         [ #  # ]:          0 :             for( nLauf = nLast - 1 ; nLauf >= 0 ; nLauf-- )
     184                 :            :             {
     185         [ #  # ]:          0 :                 if( nLauf != nNull )
     186 [ #  # ][ #  # ]:          0 :                     aPool << ocSep << eParam[ nLauf ];
     187                 :            :             }
     188                 :            :         }
     189                 :            :     }
     190                 :            : 
     191                 :            : 
     192                 :            :     // Spezialfaelle...
     193         [ #  # ]:          0 :     if( eOc == ocGetYear )
     194                 :            :     {
     195 [ #  # ][ #  # ]:          0 :         aPool << ocClose << ocSub << nMerk0;
                 [ #  # ]
     196                 :            :     }
     197         [ #  # ]:          0 :     else if( eOc == ocFixed )
     198                 :            :     {
     199 [ #  # ][ #  # ]:          0 :         aPool << ocSep << ocTrue << ocOpen << ocClose;
         [ #  # ][ #  # ]
     200                 :            :     }
     201         [ #  # ]:          0 :     else if( eOc == ocFind )
     202                 :            :     {
     203         [ #  # ]:          0 :         nMerk1 = aPool.Store();
     204         [ #  # ]:          0 :         DecToken( nMerk1 );
     205         [ #  # ]:          0 :         aPool << nMerk1;
     206                 :            :     }
     207                 :            : 
     208         [ #  # ]:          0 :     aPool << ocClose;
     209                 :            : 
     210                 :            :     // ................
     211                 :            : 
     212         [ #  # ]:          0 :     aPool >> aStack;
     213                 :            : 
     214         [ #  # ]:          0 :     if( bNeg )
     215                 :            :     {
     216 [ #  # ][ #  # ]:          0 :         aPool << ocOpen << ocSub << aStack << ocClose;
         [ #  # ][ #  # ]
     217         [ #  # ]:          0 :         aPool >> aStack;
     218                 :            :     }
     219                 :          0 : }
     220                 :            : 
     221                 :            : 
     222                 :          0 : void LotusToSc::LotusRelToScRel( sal_uInt16 nCol, sal_uInt16 nRow, ScSingleRefData& rSRD )
     223                 :            : {
     224                 :            :     // Col-Bemachung
     225         [ #  # ]:          0 :     if( nCol & 0x8000 )
     226                 :            :     {
     227                 :          0 :         rSRD.SetColRel( sal_True );
     228         [ #  # ]:          0 :         if( nCol & 0x0080 )
     229                 :          0 :             nCol |= 0xFF00;
     230                 :            :         else
     231                 :          0 :             nCol &= 0x00FF;
     232                 :            :         // #i36252# first cast unsigned 16-bit to signed 16-bit, and then to SCsCOL
     233                 :          0 :         rSRD.nRelCol = static_cast< SCsCOL >( static_cast< sal_Int16 >( nCol ) );
     234                 :            :     }
     235                 :            :     else
     236                 :            :     {
     237                 :          0 :         rSRD.SetColRel( false );
     238                 :          0 :         rSRD.nCol = static_cast< SCsCOL >( nCol & 0x00FF );
     239                 :            :     }
     240                 :            : 
     241                 :            :     // Row-Bemachung
     242         [ #  # ]:          0 :     if( nRow & 0x8000 )
     243                 :            :     {
     244                 :          0 :         rSRD.SetRowRel( sal_True );
     245                 :            :         // vorzeichenrichtige Erweiterung
     246      [ #  #  # ]:          0 :         switch( eTyp )
     247                 :            :         {
     248                 :            :             // 5432 1098 7654 3210
     249                 :            :             // 8421 8421 8421 8421
     250                 :            :             //       xxx xxxx xxxx
     251                 :            :             case eWK_1:
     252         [ #  # ]:          0 :                 if( nRow & 0x0400 )
     253                 :          0 :                     nRow |= 0xF800;
     254                 :            :                 else
     255                 :          0 :                     nRow &= 0x07FF;
     256                 :          0 :                 break;
     257                 :            :             // 8421 8421 8421 8421
     258                 :            :             //    x xxxx xxxx xxxx
     259                 :            :             case eWK_2:
     260         [ #  # ]:          0 :                 if( nRow & 0x1000 )
     261                 :          0 :                     nRow |= 0xE000;
     262                 :            :                 else
     263                 :          0 :                     nRow &= 0x1FFF;
     264                 :          0 :                 break;
     265                 :            :             default:
     266                 :            :                 OSL_FAIL( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
     267                 :            :         }
     268                 :            :     }
     269                 :            :     else
     270                 :            :     {
     271                 :          0 :         rSRD.SetRowRel( false );
     272      [ #  #  # ]:          0 :         switch( eTyp )
     273                 :            :         {
     274                 :            :             // 5432 1098 7654 3210
     275                 :            :             // 8421 8421 8421 8421
     276                 :            :             //       xxx xxxx xxxx
     277                 :            :             case eWK_1:
     278                 :          0 :                 nRow &= 0x07FF;
     279                 :          0 :                 break;
     280                 :            :             // 8421 8421 8421 8421
     281                 :            :             //   xx xxxx xxxx xxxx
     282                 :            :             case eWK_2:
     283                 :          0 :                 nRow &= 0x3FFF;
     284                 :          0 :                 break;
     285                 :            :             default:
     286                 :            :                 OSL_FAIL( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
     287                 :            :         }
     288                 :            :     }
     289                 :            : 
     290         [ #  # ]:          0 :     if( rSRD.IsRowRel() )
     291                 :            :         // #i36252# first cast unsigned 16-bit to signed 16-bit, and then to SCsROW
     292                 :          0 :         rSRD.nRelRow = static_cast< SCsROW >( static_cast< sal_Int16 >( nRow ) );
     293                 :            :     else
     294                 :          0 :         rSRD.nRow = static_cast< SCsROW >( nRow );
     295                 :            : 
     296 [ #  # ][ #  # ]:          0 :     if( rSRD.IsRowRel() || rSRD.IsColRel() )
                 [ #  # ]
     297                 :          0 :         rSRD.CalcAbsIfRel( aEingPos );
     298                 :          0 : }
     299                 :            : 
     300                 :            : 
     301                 :          0 : void LotusToSc::ReadSRD( ScSingleRefData& rSRD, sal_uInt8 nRelBit )
     302                 :            : {
     303                 :            :     sal_uInt8           nTab, nCol;
     304                 :            :     sal_uInt16          nRow;
     305                 :            : 
     306         [ #  # ]:          0 :     Read( nRow );
     307         [ #  # ]:          0 :     Read( nTab );
     308         [ #  # ]:          0 :     Read( nCol );
     309                 :            : 
     310                 :          0 :     sal_Bool b3D = ( static_cast< SCTAB >( nTab ) != aEingPos.Tab() );
     311                 :            : 
     312                 :          0 :     rSRD.SetColRel( ( nRelBit & 0x01 ) != 0 );
     313                 :          0 :     rSRD.nCol = static_cast< SCsCOL >( nCol );
     314                 :            : 
     315                 :          0 :     rSRD.SetRowRel( ( nRelBit & 0x02 ) != 0 );
     316                 :          0 :     rSRD.nRow = static_cast< SCsROW >( nRow );
     317                 :            : 
     318 [ #  # ][ #  # ]:          0 :     rSRD.SetTabRel( ( ( nRelBit & 0x04) != 0 ) || !b3D );
     319                 :          0 :     rSRD.nTab = static_cast< SCsTAB >( nTab );
     320                 :            : 
     321                 :          0 :     rSRD.SetFlag3D( b3D );
     322                 :            : 
     323         [ #  # ]:          0 :     rSRD.CalcRelFromAbs( aEingPos );
     324                 :          0 : }
     325                 :            : 
     326                 :            : 
     327                 :          0 : void LotusToSc::IncToken( TokenId &rParam )
     328                 :            : {
     329 [ #  # ][ #  # ]:          0 :     aPool << ocOpen << rParam << nAddToken;
                 [ #  # ]
     330                 :          0 :     rParam = aPool.Store();
     331                 :          0 : }
     332                 :            : 
     333                 :            : 
     334                 :          0 : void LotusToSc::DecToken( TokenId &rParam )
     335                 :            : {
     336 [ #  # ][ #  # ]:          0 :     aPool << ocOpen << rParam << nSubToken;
                 [ #  # ]
     337                 :          0 :     rParam = aPool.Store();
     338                 :          0 : }
     339                 :            : 
     340                 :            : 
     341                 :          0 : void LotusToSc::NegToken( TokenId &rParam )
     342                 :            : {
     343 [ #  # ][ #  # ]:          0 :     aPool << ocNegSub << ocOpen << rParam << ocClose;
         [ #  # ][ #  # ]
     344                 :          0 :     rParam = aPool.Store();
     345                 :          0 : }
     346                 :            : 
     347                 :            : 
     348                 :          0 : void LotusToSc::Reset( const ScAddress& rEingPos )
     349                 :            : {
     350         [ #  # ]:          0 :     LotusConverterBase::Reset( rEingPos );
     351                 :            : 
     352         [ #  # ]:          0 :     TokenId nEins = aPool.Store( 1.0 );
     353                 :            : 
     354 [ #  # ][ #  # ]:          0 :     aPool << ocClose << ocAdd << nEins;
                 [ #  # ]
     355         [ #  # ]:          0 :     nAddToken = aPool.Store();
     356                 :            : 
     357 [ #  # ][ #  # ]:          0 :     aPool << ocClose << ocSub << nEins;
                 [ #  # ]
     358         [ #  # ]:          0 :     nSubToken = aPool.Store();
     359                 :            : 
     360         [ #  # ]:          0 :     n0Token = aPool.Store( 0.0 );
     361                 :          0 : }
     362                 :            : 
     363                 :            : 
     364                 :          0 : LotusToSc::LotusToSc( SvStream &rStream, CharSet e, sal_Bool b ) :
     365                 :          0 :     LotusConverterBase( rStream, 128 )
     366                 :            : {
     367                 :          0 :     eSrcChar = e;
     368                 :          0 :     bWK3 = false;
     369                 :          0 :     bWK123 = b;
     370                 :          0 : }
     371                 :            : 
     372                 :            : 
     373                 :            : typedef FUNC_TYPE ( FuncType1 ) ( sal_uInt8 );
     374                 :            : typedef DefTokenId ( FuncType2 ) ( sal_uInt8 );
     375                 :            : 
     376                 :            : 
     377                 :          0 : ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, sal_Int32& rRest,
     378                 :            :     const FORMULA_TYPE /*eFT*/ )
     379                 :            : {
     380                 :            :     sal_uInt8               nOc;
     381                 :            :     sal_uInt8               nAnz;
     382                 :            :     sal_uInt8               nRelBits;
     383                 :            :     sal_uInt16              nStrLen;
     384                 :            :     sal_uInt16              nRngIndex;
     385                 :          0 :     FUNC_TYPE           eType = FT_NOP;
     386                 :          0 :     TokenId             nMerk0;
     387                 :            :     DefTokenId          eOc;
     388                 :          0 :     const sal_Char*     pExtName = 0;
     389                 :          0 :     RangeNameBufferWK3& rRangeNameBufferWK3 = *pLotusRoot->pRngNmBffWK3;
     390                 :            : 
     391                 :            :     ScComplexRefData        aCRD;
     392                 :          0 :     aCRD.InitFlags();
     393                 :          0 :     ScSingleRefData&        rR = aCRD.Ref1;
     394                 :            : 
     395                 :            :     LR_ID               nId;
     396                 :          0 :     TokenId             nNewId;
     397                 :            : 
     398                 :          0 :     LotusRangeList&     rRangeList = *pLotusRoot->pRangeNames;
     399                 :            : 
     400                 :            :     FuncType1*          pIndexToType;
     401                 :            :     FuncType2*          pIndexToToken;
     402                 :            : 
     403         [ #  # ]:          0 :     if( bWK3 )
     404                 :            :     {   // for > WK3
     405                 :          0 :         pIndexToType = IndexToTypeWK123;
     406                 :          0 :         pIndexToToken = IndexToTokenWK123;
     407                 :            :     }
     408         [ #  # ]:          0 :     else if( bWK123 )
     409                 :            :     {
     410                 :          0 :         pIndexToType = IndexToTypeWK123;
     411                 :          0 :         pIndexToToken = IndexToTokenWK123;
     412                 :            :     }
     413                 :            :     else
     414                 :            :     {
     415                 :          0 :         pIndexToType = IndexToType;
     416                 :          0 :         pIndexToToken = IndexToToken;
     417                 :            : 
     418                 :          0 :         rR.SetTabRel( sal_True );
     419                 :          0 :         rR.nTab = aEingPos.Tab();
     420                 :          0 :         rR.nRelTab = 0;
     421                 :          0 :         rR.SetFlag3D( false );
     422                 :            :     }
     423                 :            : 
     424                 :          0 :     aCRD.Ref2 = rR;
     425                 :            : 
     426                 :          0 :     nBytesLeft = rRest;
     427                 :            : 
     428         [ #  # ]:          0 :     while( eType )      // != FT_Return (==0)
     429                 :            :     {
     430         [ #  # ]:          0 :         Read( nOc );
     431                 :            : 
     432         [ #  # ]:          0 :         if( nBytesLeft < 0 )
     433                 :            :         {
     434         [ #  # ]:          0 :             rpErg = aPool[ aStack.Get() ];
     435                 :          0 :             return ConvErrCount;
     436                 :            :         }
     437                 :            : 
     438         [ #  # ]:          0 :         eType = ( pIndexToType )( nOc );
     439         [ #  # ]:          0 :         eOc = ( pIndexToToken)( nOc );
     440         [ #  # ]:          0 :         if( eOc == ocNoName )
     441                 :          0 :             pExtName = GetAddInName( nOc );
     442                 :            : 
     443   [ #  #  #  #  :          0 :         switch( eType )
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
                #  #  # ]
     444                 :            :         {
     445                 :            :             case FT_Return:
     446 [ #  # ][ #  # ]:          0 :                 if( bWK3 || bWK123 )
     447                 :          0 :                     nBytesLeft = 0; // wird ab WK3 nicht benutzt
     448                 :            : 
     449                 :          0 :                 rRest = nBytesLeft;
     450                 :          0 :                 break;
     451                 :            :             case FT_NotImpl:
     452         [ #  # ]:          0 :             case FT_FuncFix0:   DoFunc( eOc, 0, pExtName ); break;
     453         [ #  # ]:          0 :             case FT_FuncFix1:   DoFunc( eOc, 1, pExtName ); break;
     454         [ #  # ]:          0 :             case FT_FuncFix2:   DoFunc( eOc, 2, pExtName ); break;
     455         [ #  # ]:          0 :             case FT_FuncFix3:   DoFunc( eOc, 3, pExtName ); break;
     456         [ #  # ]:          0 :             case FT_FuncFix4:   DoFunc( eOc, 4, pExtName ); break;
     457                 :            :                 case FT_FuncVar:
     458         [ #  # ]:          0 :                 Read( nAnz );
     459         [ #  # ]:          0 :                 DoFunc( eOc, nAnz, pExtName );
     460                 :          0 :                 break;
     461                 :            :             case FT_Neg:
     462 [ #  # ][ #  # ]:          0 :                 aPool << ocOpen << ocNegSub << aStack << ocClose;
         [ #  # ][ #  # ]
     463         [ #  # ]:          0 :                 aPool >> aStack;
     464                 :          0 :                 break;
     465                 :            :             case FT_Op:
     466                 :          0 :                 aStack >> nMerk0;
     467 [ #  # ][ #  # ]:          0 :                 aPool << aStack << eOc << nMerk0;
                 [ #  # ]
     468         [ #  # ]:          0 :                 aPool >> aStack;
     469                 :          0 :                 break;
     470                 :            :             case FT_ConstFloat:
     471                 :            :             {
     472                 :            :                 double  fDouble;
     473         [ #  # ]:          0 :                 Read( fDouble );
     474         [ #  # ]:          0 :                 aStack << aPool.Store( fDouble );
     475                 :            :             }
     476                 :          0 :                 break;
     477                 :            :             case FT_Variable:
     478                 :            :             {
     479                 :            :                 sal_uInt16  nCol, nRow;
     480         [ #  # ]:          0 :                 Read( nCol );
     481         [ #  # ]:          0 :                 Read( nRow );
     482                 :            : 
     483         [ #  # ]:          0 :                 LotusRelToScRel( nCol, nRow, rR );
     484                 :            : 
     485         [ #  # ]:          0 :                 if( bWK3 )
     486         [ #  # ]:          0 :                     nNewId = aPool.Store( rR );
     487                 :            :                 else
     488                 :            :                 {
     489         [ #  # ]:          0 :                     nId = rRangeList.GetIndex( rR.nCol, rR.nRow );
     490                 :            : 
     491         [ #  # ]:          0 :                     if( nId == ID_FAIL )
     492                 :            :                         // kein Range dazu
     493         [ #  # ]:          0 :                         nNewId = aPool.Store( rR );
     494                 :            :                     else
     495         [ #  # ]:          0 :                         nNewId = aPool.Store( ( sal_uInt16 ) nId );
     496                 :            :                 }
     497                 :            : 
     498                 :          0 :                 aStack << nNewId;
     499                 :            :             }
     500                 :          0 :                 break;
     501                 :            :             case FT_Range:
     502                 :            :             {
     503                 :            :                 sal_uInt16  nColS, nRowS, nColE, nRowE;
     504         [ #  # ]:          0 :                 Read( nColS );
     505         [ #  # ]:          0 :                 Read( nRowS );
     506         [ #  # ]:          0 :                 Read( nColE );
     507         [ #  # ]:          0 :                 Read( nRowE );
     508                 :            : 
     509         [ #  # ]:          0 :                 LotusRelToScRel( nColS, nRowS, rR );
     510         [ #  # ]:          0 :                 LotusRelToScRel( nColE, nRowE, aCRD.Ref2 );
     511                 :            : 
     512         [ #  # ]:          0 :                 if( bWK3 )
     513         [ #  # ]:          0 :                     nNewId = aPool.Store( aCRD );
     514                 :            :                 else
     515                 :            :                 {
     516                 :            :                     nId = rRangeList.GetIndex(
     517         [ #  # ]:          0 :                         rR.nCol, rR.nRow, aCRD.Ref2.nCol, aCRD.Ref2.nRow );
     518                 :            : 
     519         [ #  # ]:          0 :                     if( nId == ID_FAIL )
     520                 :            :                         // kein Range dazu
     521         [ #  # ]:          0 :                         nNewId = aPool.Store( aCRD );
     522                 :            :                     else
     523         [ #  # ]:          0 :                         nNewId = aPool.Store( ( sal_uInt16 ) nId );
     524                 :            :                 }
     525                 :            : 
     526                 :          0 :                 aStack << nNewId;
     527                 :            :             }
     528                 :          0 :                 break;
     529                 :            :             case FT_Braces:
     530 [ #  # ][ #  # ]:          0 :                 aPool << ocOpen << aStack << ocClose;
                 [ #  # ]
     531         [ #  # ]:          0 :                 aPool >> aStack;
     532                 :          0 :                 break;
     533                 :            :             case FT_ConstInt:
     534                 :            :             {
     535                 :            :                 sal_Int16   nVal;
     536         [ #  # ]:          0 :                 Read( nVal );
     537         [ #  # ]:          0 :                 aStack << aPool.Store( ( double ) nVal );
     538                 :            :             }
     539                 :          0 :                 break;
     540                 :            :             case FT_ConstString:
     541                 :            :             {
     542 [ #  # ][ #  # ]:          0 :                 String  aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
     543 [ #  # ][ #  # ]:          0 :                 aStack << aPool.Store( aTmp );
     544                 :            :             }
     545                 :          0 :                 break;
     546                 :            :             case FT_NOP:
     547                 :          0 :                 break;
     548                 :            :             // ------------------------------------------ fuer > WK3 -
     549                 :            :             case FT_Cref:
     550         [ #  # ]:          0 :                 Read( nRelBits );
     551         [ #  # ]:          0 :                 ReadSRD( rR, nRelBits );
     552         [ #  # ]:          0 :                 aStack << aPool.Store( rR );
     553                 :          0 :                 break;
     554                 :            :             case FT_Rref:
     555         [ #  # ]:          0 :                 Read( nRelBits );
     556         [ #  # ]:          0 :                 ReadCRD( aCRD, nRelBits );
     557         [ #  # ]:          0 :                 aStack << aPool.Store( aCRD );
     558                 :          0 :                 break;
     559                 :            :             case FT_Nrref:
     560                 :            :             {
     561 [ #  # ][ #  # ]:          0 :                 String  aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
     562 [ #  # ][ #  # ]:          0 :                 if( rRangeNameBufferWK3.FindRel( aTmp, nRngIndex ) )
     563         [ #  # ]:          0 :                     aStack << aPool.Store( nRngIndex );
     564                 :            :                 else
     565                 :            :             {
     566         [ #  # ]:          0 :                     String  aText( RTL_CONSTASCII_USTRINGPARAM( "NRREF " ) );
     567         [ #  # ]:          0 :                     aText += aTmp;
     568 [ #  # ][ #  # ]:          0 :                     aStack << aPool.Store( aText );
     569         [ #  # ]:          0 :             }
     570                 :            :             }
     571                 :          0 :                 break;
     572                 :            :             case FT_Absnref:
     573                 :            :             {
     574 [ #  # ][ #  # ]:          0 :                 String aTmp(ScfTools::read_zeroTerminated_uInt8s_ToOUString(aIn, nBytesLeft, eSrcChar));
     575 [ #  # ][ #  # ]:          0 :                 if( rRangeNameBufferWK3.FindAbs( aTmp, nRngIndex ) )
     576         [ #  # ]:          0 :                     aStack << aPool.Store( nRngIndex );
     577                 :            :                 else
     578                 :            :                 {
     579         [ #  # ]:          0 :                     String  aText( RTL_CONSTASCII_USTRINGPARAM( "ABSNREF " ) );
     580         [ #  # ]:          0 :                     aText += aTmp;
     581 [ #  # ][ #  # ]:          0 :                     aStack << aPool.Store( aText );
     582         [ #  # ]:          0 :                 }
     583                 :            :             }
     584                 :          0 :                 break;
     585                 :            :             case FT_Erref:
     586         [ #  # ]:          0 :                 Ignore( 4 );
     587         [ #  # ]:          0 :                 aPool << ocBad;
     588         [ #  # ]:          0 :                 aPool >> aStack;
     589                 :          0 :                 break;
     590                 :            :             case FT_Ecref:
     591         [ #  # ]:          0 :                 Ignore( 5 );
     592         [ #  # ]:          0 :                 aPool << ocBad;
     593         [ #  # ]:          0 :                 aPool >> aStack;
     594                 :          0 :                 break;
     595                 :            :             case FT_Econstant:
     596         [ #  # ]:          0 :                 Ignore( 10 );
     597         [ #  # ]:          0 :                 aPool << ocBad;
     598         [ #  # ]:          0 :                 aPool >> aStack;
     599                 :          0 :                 break;
     600                 :            :             case FT_Splfunc:
     601                 :            :             {
     602         [ #  # ]:          0 :                 Read( nAnz );
     603         [ #  # ]:          0 :                 Read( nStrLen );
     604                 :            : 
     605         [ #  # ]:          0 :                 if( nStrLen )
     606                 :            :                 {
     607                 :          0 :                                         sal_Char*       p = new (::std::nothrow) sal_Char[ nStrLen + 1 ];
     608         [ #  # ]:          0 :                     if (p)
     609                 :            :                     {
     610         [ #  # ]:          0 :                         aIn.Read( p, nStrLen );
     611                 :          0 :                         p[ nStrLen ] = 0x00;
     612                 :            : 
     613         [ #  # ]:          0 :                         DoFunc( ocNoName, nAnz, p );
     614                 :            : 
     615         [ #  # ]:          0 :                         delete[] p;
     616                 :            :                     }
     617                 :            :                     else
     618         [ #  # ]:          0 :                         DoFunc( ocNoName, nAnz, NULL );
     619                 :            :                 }
     620                 :            :                 else
     621         [ #  # ]:          0 :                     DoFunc( ocNoName, nAnz, NULL );
     622                 :            :             }
     623                 :          0 :                 break;
     624                 :            :             case FT_Const10Float:
     625         [ #  # ]:          0 :                     if ( bWK123 )
     626                 :            :                     {
     627                 :            :                             double fValue;
     628         [ #  # ]:          0 :                             Read( fValue );
     629         [ #  # ]:          0 :                             aStack << aPool.Store( fValue );
     630                 :            :                     }
     631 [ #  # ][ #  # ]:          0 :                     else aStack << aPool.Store( ScfTools::ReadLongDouble( aIn ) );
     632                 :          0 :                     break;
     633                 :            :             case FT_Snum:
     634         [ #  # ]:          0 :                     if ( bWK123 )
     635                 :            :                 {
     636                 :            :                          sal_uInt32   nValue;
     637                 :            : 
     638         [ #  # ]:          0 :                          Read( nValue );
     639         [ #  # ]:          0 :                      double  fValue = Snum32ToDouble( nValue );
     640         [ #  # ]:          0 :                      aStack << aPool.Store( fValue );
     641                 :            :                 }
     642                 :            :                 else
     643                 :            :                 {
     644                 :            :                         sal_Int16 nVal;
     645         [ #  # ]:          0 :                         Read( nVal );
     646 [ #  # ][ #  # ]:          0 :                         aStack << aPool.Store( SnumToDouble( nVal ) );
     647                 :            :                 }
     648                 :          0 :                 break;
     649                 :            :                 default:
     650                 :            :                 OSL_FAIL( "*LotusToSc::Convert(): unbekannter enum!" );
     651                 :            :         }
     652                 :            :     }
     653                 :            : 
     654         [ #  # ]:          0 :     rpErg = aPool[ aStack.Get() ];
     655                 :            : 
     656                 :            :     OSL_ENSURE( nBytesLeft >= 0, "*LotusToSc::Convert(): zuviel verarbeitet!");
     657                 :            :     OSL_ENSURE( nBytesLeft <= 0, "*LotusToSc::Convert(): wat is mit'm Rest?" );
     658                 :            : 
     659         [ #  # ]:          0 :     if( rRest )
     660         [ #  # ]:          0 :         aIn.SeekRel( nBytesLeft );  // eventuellen Rest/Ueberlauf korrigieren
     661                 :            : 
     662                 :          0 :     rRest = 0;
     663                 :            : 
     664                 :          0 :     return ConvOK;
     665                 :            : }
     666                 :            : 
     667                 :            : 
     668                 :          0 : FUNC_TYPE LotusToSc::IndexToType( sal_uInt8 nIndex )
     669                 :            : {
     670                 :            :     static const FUNC_TYPE pType[ 256 ] =
     671                 :            :     {                       // Code Bezeichnung
     672                 :            :         FT_ConstFloat,      //    0 8-Byte-IEEE-Float
     673                 :            :         FT_Variable,        //    1 Variable
     674                 :            :         FT_Range,           //    2 Bereich
     675                 :            :         FT_Return,          //    3 return
     676                 :            :         FT_Braces,          //    4 Klammer
     677                 :            :         FT_ConstInt,        //    5 2-Byte-Integer
     678                 :            :         FT_ConstString,     //    6 ASCII-String
     679                 :            :         FT_NOP,             //    7 NOP
     680                 :            :         FT_Neg,             //    8 Negation
     681                 :            :         FT_Op,              //    9 Addition
     682                 :            :         FT_Op,              //   10 Subtraktion
     683                 :            :         FT_Op,              //   11 Multiplikation
     684                 :            :         FT_Op,              //   12 Division
     685                 :            :         FT_Op,              //   13 Potenzierung
     686                 :            :         FT_Op,              //   14 Gleichheit
     687                 :            :         FT_Op,              //   15 Ungleich
     688                 :            :         FT_Op,              //   16 Kleiner-gleich
     689                 :            :         FT_Op,              //   17 Groesser-gleich
     690                 :            :         FT_Op,              //   18 Kleiner
     691                 :            :         FT_Op,              //   19 Groesser
     692                 :            :         FT_Op,              //   20 And (logisch)
     693                 :            :         FT_Op,              //   21 Or (logisch)
     694                 :            :         FT_FuncFix1,        //   22 Not (logisch)
     695                 :            :         FT_NOP,             //   23 unaeres Plus
     696                 :            :         FT_NotImpl,         //   24
     697                 :            :         FT_NotImpl,         //   25
     698                 :            :         FT_NotImpl,         //   26
     699                 :            :         FT_NotImpl,         //   27
     700                 :            :         FT_NotImpl,         //   28
     701                 :            :         FT_NotImpl,         //   29
     702                 :            :         FT_NotImpl,         //   30
     703                 :            :         FT_FuncFix0,        //   31 Not applicable
     704                 :            :         FT_FuncFix0,        //   32 Error
     705                 :            :         FT_FuncFix1,        //   33 Betrag ABS()
     706                 :            :         FT_FuncFix1,        //   34 Ganzzahl INT()
     707                 :            :         FT_FuncFix1,        //   35 Quadratwurzel
     708                 :            :         FT_FuncFix1,        //   36 Zehnerlogarithmus
     709                 :            :         FT_FuncFix1,        //   37 Natuerlicher Logarithmus
     710                 :            :         FT_FuncFix0,        //   38 PI
     711                 :            :         FT_FuncFix1,        //   39 Sinus
     712                 :            :         FT_FuncFix1,        //   40 Cosinus
     713                 :            :         FT_FuncFix1,        //   41 Tangens
     714                 :            :         FT_FuncFix2,        //   42 Arcus-Tangens 2 (4.Quadrant)   <----- richtig? -
     715                 :            :         FT_FuncFix1,        //   43 Arcus-Tangens (2.Quadrant)
     716                 :            :         FT_FuncFix1,        //   44 Arcus-Sinus
     717                 :            :         FT_FuncFix1,        //   45 Arcus-Cosinus
     718                 :            :         FT_FuncFix1,        //   46 Exponentialfunktion
     719                 :            :         FT_FuncFix2,        //   47 Modulo
     720                 :            :         FT_FuncVar,         //   48 Auswahl
     721                 :            :         FT_FuncFix1,        //   49 Is not applicable?
     722                 :            :         FT_FuncFix1,        //   50 Is Error?
     723                 :            :         FT_FuncFix0,        //   51 FALSE
     724                 :            :         FT_FuncFix0,        //   52 TRUE
     725                 :            :         FT_FuncFix0,        //   53 Zufallszahl
     726                 :            :         FT_FuncFix3,        //   54 Datum
     727                 :            :         FT_FuncFix0,        //   55 Heute
     728                 :            :         FT_FuncFix3,        //   56 Payment
     729                 :            :         FT_FuncFix3,        //   57 Present Value
     730                 :            :         FT_FuncFix3,        //   58 Future Value
     731                 :            :         FT_FuncFix3,        //   59 If ... then ... else ...
     732                 :            :         FT_FuncFix1,        //   60 Tag des Monats
     733                 :            :         FT_FuncFix1,        //   61 Monat
     734                 :            :         FT_FuncFix1,        //   62 Jahr
     735                 :            :         FT_FuncFix2,        //   63 Runden
     736                 :            :         FT_FuncFix3,        //   64 Zeit
     737                 :            :         FT_FuncFix1,        //   65 Stunde
     738                 :            :         FT_FuncFix1,        //   66 Minute
     739                 :            :         FT_FuncFix1,        //   67 Sekunde
     740                 :            :         FT_FuncFix1,        //   68 Ist Zahl?
     741                 :            :         FT_FuncFix1,        //   69 Ist Text?
     742                 :            :         FT_FuncFix1,        //   70 Len()
     743                 :            :         FT_FuncFix1,        //   71 Val()
     744                 :            :         FT_FuncFix2,        //   72 String()
     745                 :            :         FT_FuncFix3,        //   73 Mid()
     746                 :            :         FT_FuncFix1,        //   74 Char()
     747                 :            :         FT_FuncFix1,        //   75 Ascii()
     748                 :            :         FT_FuncFix3,        //   76 Find()
     749                 :            :         FT_FuncFix1,        //   77 Datevalue
     750                 :            :         FT_FuncFix1,        //   78 Timevalue
     751                 :            :         FT_FuncFix1,        //   79 Cellpointer
     752                 :            :         FT_FuncVar,         //   80 Sum()
     753                 :            :         FT_FuncVar,         //   81 Avg()
     754                 :            :         FT_FuncVar,         //   82 Cnt()
     755                 :            :         FT_FuncVar,         //   83 Min()
     756                 :            :         FT_FuncVar,         //   84 Max()
     757                 :            :         FT_FuncFix3,        //   85 Vlookup()
     758                 :            :         FT_FuncFix2,        //   86 Npv()
     759                 :            :         FT_FuncVar,         //   87 Var()
     760                 :            :         FT_FuncVar,         //   88 Std()
     761                 :            :         FT_FuncFix2,        //   89 Irr()
     762                 :            :         FT_FuncFix3,        //   90 Hlookup()
     763                 :            :         FT_FuncFix3,        //   91 ?
     764                 :            :         FT_FuncFix3,        //   92 ?
     765                 :            :         FT_FuncFix3,        //   93 ?
     766                 :            :         FT_FuncFix3,        //   94 ?
     767                 :            :         FT_FuncFix3,        //   95 ?
     768                 :            :         FT_FuncFix3,        //   96 ?
     769                 :            :         FT_FuncFix3,        //   97 ?
     770                 :            :         FT_FuncFix3,        //   98 Index()                         <- richtig? -
     771                 :            :         FT_FuncFix1,        //   99 Cols()
     772                 :            :         FT_FuncFix1,        //  100 Rows()
     773                 :            :         FT_FuncFix2,        //  101 Repeat()
     774                 :            :         FT_FuncFix1,        //  102 Upper()
     775                 :            :         FT_FuncFix1,        //  103 Lower()
     776                 :            :         FT_FuncFix2,        //  104 Left()
     777                 :            :         FT_FuncFix2,        //  105 Right()
     778                 :            :         FT_FuncFix4,        //  106 Replace()
     779                 :            :         FT_FuncFix1,        //  107 Proper()
     780                 :            :         FT_FuncFix2,        //  108 Cell()
     781                 :            :         FT_FuncFix1,        //  109 Trim()
     782                 :            :         FT_FuncFix1,        //  110 Clean()
     783                 :            :         FT_FuncFix1,        //  111 F()
     784                 :            :         FT_FuncFix1,        //  112 Wert() (oder W()?)
     785                 :            :         FT_FuncFix2,        //  113 Exact()
     786                 :            :         FT_NotImpl,         //  114 Call()
     787                 :            :         FT_FuncFix1,        //  115 @@()
     788                 :            :         FT_FuncFix3,        //  116 Rate()
     789                 :            :         FT_FuncFix1,        //  117 Term()
     790                 :            :         FT_FuncFix1,        //  118 Cterm()
     791                 :            :         FT_FuncFix3,        //  119 Sln()
     792                 :            :         FT_FuncFix4,        //  120 Syd(), Soy()
     793                 :            :         FT_FuncFix4,        //  121 Ddb()
     794                 :            :         FT_NotImpl,         //  122
     795                 :            :         FT_NotImpl,         //  123
     796                 :            :         FT_NotImpl,         //  124
     797                 :            :         FT_NotImpl,         //  125
     798                 :            :         FT_NotImpl,         //  126
     799                 :            :         FT_NotImpl,         //  127
     800                 :            :         FT_NotImpl,         //  128
     801                 :            :         FT_NotImpl,         //  129
     802                 :            :         FT_NotImpl,         //  130
     803                 :            :         FT_NotImpl,         //  131
     804                 :            :         FT_NotImpl,         //  132
     805                 :            :         FT_NotImpl,         //  133
     806                 :            :         FT_NotImpl,         //  134
     807                 :            :         FT_NotImpl,         //  135
     808                 :            :         FT_NotImpl,         //  136
     809                 :            :         FT_NotImpl,         //  137
     810                 :            :         FT_NotImpl,         //  138
     811                 :            :         FT_NotImpl,         //  139
     812                 :            :         FT_NotImpl,         //  140
     813                 :            :         FT_NotImpl,         //  141
     814                 :            :         FT_NotImpl,         //  142
     815                 :            :         FT_NotImpl,         //  143
     816                 :            :         FT_NotImpl,         //  144
     817                 :            :         FT_NotImpl,         //  145
     818                 :            :         FT_NotImpl,         //  146
     819                 :            :         FT_NotImpl,         //  147
     820                 :            :         FT_NotImpl,         //  148
     821                 :            :         FT_NotImpl,         //  149
     822                 :            :         FT_NotImpl,         //  150
     823                 :            :         FT_NotImpl,         //  151
     824                 :            :         FT_NotImpl,         //  152
     825                 :            :         FT_NotImpl,         //  153
     826                 :            :         FT_NotImpl,         //  154
     827                 :            :         FT_NotImpl,         //  155
     828                 :            :         FT_FuncVar,         //  156 ?
     829                 :            :         FT_NotImpl,         //  157
     830                 :            :         FT_NotImpl,         //  158
     831                 :            :         FT_NotImpl,         //  159
     832                 :            :         FT_NotImpl,         //  160
     833                 :            :         FT_NotImpl,         //  161
     834                 :            :         FT_NotImpl,         //  162
     835                 :            :         FT_NotImpl,         //  163
     836                 :            :         FT_NotImpl,         //  164
     837                 :            :         FT_NotImpl,         //  165
     838                 :            :         FT_NotImpl,         //  166
     839                 :            :         FT_NotImpl,         //  167
     840                 :            :         FT_NotImpl,         //  168
     841                 :            :         FT_NotImpl,         //  169
     842                 :            :         FT_NotImpl,         //  170
     843                 :            :         FT_NotImpl,         //  171
     844                 :            :         FT_NotImpl,         //  172
     845                 :            :         FT_NotImpl,         //  173
     846                 :            :         FT_NotImpl,         //  174
     847                 :            :         FT_NotImpl,         //  175
     848                 :            :         FT_NotImpl,         //  176
     849                 :            :         FT_NotImpl,         //  177
     850                 :            :         FT_NotImpl,         //  178
     851                 :            :         FT_NotImpl,         //  179
     852                 :            :         FT_NotImpl,         //  180
     853                 :            :         FT_NotImpl,         //  181
     854                 :            :         FT_NotImpl,         //  182
     855                 :            :         FT_NotImpl,         //  183
     856                 :            :         FT_NotImpl,         //  184
     857                 :            :         FT_NotImpl,         //  185
     858                 :            :         FT_NotImpl,         //  186
     859                 :            :         FT_NotImpl,         //  187
     860                 :            :         FT_NotImpl,         //  188
     861                 :            :         FT_NotImpl,         //  189
     862                 :            :         FT_NotImpl,         //  190
     863                 :            :         FT_NotImpl,         //  191
     864                 :            :         FT_NotImpl,         //  192
     865                 :            :         FT_NotImpl,         //  193
     866                 :            :         FT_NotImpl,         //  194
     867                 :            :         FT_NotImpl,         //  195
     868                 :            :         FT_NotImpl,         //  196
     869                 :            :         FT_NotImpl,         //  197
     870                 :            :         FT_NotImpl,         //  198
     871                 :            :         FT_NotImpl,         //  199
     872                 :            :         FT_NotImpl,         //  200
     873                 :            :         FT_NotImpl,         //  201
     874                 :            :         FT_NotImpl,         //  202
     875                 :            :         FT_NotImpl,         //  203
     876                 :            :         FT_NotImpl,         //  204
     877                 :            :         FT_NotImpl,         //  205
     878                 :            :         FT_FuncVar,         //  206 ?
     879                 :            :         FT_NotImpl,         //  207
     880                 :            :         FT_NotImpl,         //  208
     881                 :            :         FT_NotImpl,         //  209
     882                 :            :         FT_NotImpl,         //  210
     883                 :            :         FT_NotImpl,         //  211
     884                 :            :         FT_NotImpl,         //  212
     885                 :            :         FT_NotImpl,         //  213
     886                 :            :         FT_NotImpl,         //  214
     887                 :            :         FT_NotImpl,         //  215
     888                 :            :         FT_NotImpl,         //  216
     889                 :            :         FT_NotImpl,         //  217
     890                 :            :         FT_NotImpl,         //  218
     891                 :            :         FT_NotImpl,         //  219
     892                 :            :         FT_NotImpl,         //  220
     893                 :            :         FT_NotImpl,         //  221
     894                 :            :         FT_NotImpl,         //  222
     895                 :            :         FT_NotImpl,         //  223
     896                 :            :         FT_NotImpl,         //  224
     897                 :            :         FT_NotImpl,         //  225
     898                 :            :         FT_NotImpl,         //  226
     899                 :            :         FT_NotImpl,         //  227
     900                 :            :         FT_NotImpl,         //  228
     901                 :            :         FT_NotImpl,         //  229
     902                 :            :         FT_NotImpl,         //  230
     903                 :            :         FT_NotImpl,         //  231
     904                 :            :         FT_NotImpl,         //  232
     905                 :            :         FT_NotImpl,         //  233
     906                 :            :         FT_NotImpl,         //  234
     907                 :            :         FT_NotImpl,         //  235
     908                 :            :         FT_NotImpl,         //  236
     909                 :            :         FT_NotImpl,         //  237
     910                 :            :         FT_NotImpl,         //  238
     911                 :            :         FT_NotImpl,         //  239
     912                 :            :         FT_NotImpl,         //  240
     913                 :            :         FT_NotImpl,         //  241
     914                 :            :         FT_NotImpl,         //  242
     915                 :            :         FT_NotImpl,         //  243
     916                 :            :         FT_NotImpl,         //  244
     917                 :            :         FT_NotImpl,         //  245
     918                 :            :         FT_NotImpl,         //  246
     919                 :            :         FT_NotImpl,         //  247
     920                 :            :         FT_NotImpl,         //  248
     921                 :            :         FT_NotImpl,         //  249
     922                 :            :         FT_NotImpl,         //  250
     923                 :            :         FT_NotImpl,         //  251
     924                 :            :         FT_NotImpl,         //  252
     925                 :            :         FT_NotImpl,         //  253
     926                 :            :         FT_NotImpl,         //  254
     927                 :            :         FT_FuncVar,         //  255 ?
     928                 :            :     };
     929                 :          0 :     return pType[ nIndex ];
     930                 :            : }
     931                 :            : 
     932                 :            : 
     933                 :          0 : DefTokenId LotusToSc::IndexToToken( sal_uInt8 nIndex )
     934                 :            : {
     935                 :            :     static const DefTokenId pToken[ 256 ] =
     936                 :            :     {                       // Code Bezeichnung
     937                 :            :         ocPush,             //    0 8-Byte-IEEE-Float
     938                 :            :         ocPush,             //    1 Variable
     939                 :            :         ocPush,             //    2 Bereich
     940                 :            :         ocPush,             //    3 return
     941                 :            :         ocPush,             //    4 Klammer
     942                 :            :         ocPush,             //    5 2-Byte-Integer
     943                 :            :         ocPush,             //    6 ASCII-String
     944                 :            :         ocPush,             //    7 NOP
     945                 :            :         ocNegSub,           //    8 Negation
     946                 :            :         ocAdd,              //    9 Addition
     947                 :            :         ocSub,              //   10 Subtraktion
     948                 :            :         ocMul,              //   11 Multiplikation
     949                 :            :         ocDiv,              //   12 Division
     950                 :            :         ocPow,              //   13 Potenzierung
     951                 :            :         ocEqual,            //   14 Gleichheit
     952                 :            :         ocNotEqual,         //   15 Ungleich
     953                 :            :         ocLessEqual,        //   16 Kleiner-gleich
     954                 :            :         ocGreaterEqual,     //   17 Groesser-gleich
     955                 :            :         ocLess,             //   18 Kleiner
     956                 :            :         ocGreater,          //   19 Groesser
     957                 :            :         ocAnd,              //   20 And (logisch)
     958                 :            :         ocOr,               //   21 Or (logisch)
     959                 :            :         ocNot,              //   22 Not (logisch)
     960                 :            :         ocPush,             //   23 unaeres Plus
     961                 :            :         ocNoName,           //   24
     962                 :            :         ocNoName,           //   25
     963                 :            :         ocNoName,           //   26
     964                 :            :         ocNoName,           //   27
     965                 :            :         ocNoName,           //   28
     966                 :            :         ocNoName,           //   29
     967                 :            :         ocNoName,           //   30
     968                 :            :         ocNotAvail,         //   31 Not available
     969                 :            :         ocNoName,           //   32 Error
     970                 :            :         ocAbs,              //   33 Betrag ABS()
     971                 :            :         ocInt,              //   34 Ganzzahl INT()
     972                 :            :         ocSqrt,             //   35 Quadratwurzel
     973                 :            :         ocLog10,            //   36 Zehnerlogarithmus
     974                 :            :         ocLn,               //   37 Natuerlicher Logarithmus
     975                 :            :         ocPi,               //   38 PI
     976                 :            :         ocSin,              //   39 Sinus
     977                 :            :         ocCos,              //   40 Cosinus
     978                 :            :         ocTan,              //   41 Tangens
     979                 :            :         ocArcTan2,          //   42 Arcus-Tangens 2 (4.Quadrant)
     980                 :            :         ocArcTan,           //   43 Arcus-Tangens (2.Quadrant)
     981                 :            :         ocArcSin,           //   44 Arcus-Sinus
     982                 :            :         ocArcCos,           //   45 Arcus-Cosinus
     983                 :            :         ocExp,              //   46 Exponentialfunktion
     984                 :            :         ocMod,              //   47 Modulo
     985                 :            :         ocChose,            //   48 Auswahl
     986                 :            :         ocIsNA,             //   49 Is not available?
     987                 :            :         ocIsError,          //   50 Is Error?
     988                 :            :         ocFalse,            //   51 FALSE
     989                 :            :         ocTrue,             //   52 TRUE
     990                 :            :         ocRandom,           //   53 Zufallszahl
     991                 :            :         ocGetDate,          //   54 Datum
     992                 :            :         ocGetActDate,       //   55 Heute
     993                 :            :         ocRMZ,              //   56 Payment
     994                 :            :         ocBW,               //   57 Present Value
     995                 :            :         ocZW,               //   58 Future Value
     996                 :            :         ocIf,               //   59 If ... then ... else ...
     997                 :            :         ocGetDay,           //   60 Tag des Monats
     998                 :            :         ocGetMonth,         //   61 Monat
     999                 :            :         ocGetYear,          //   62 Jahr
    1000                 :            :         ocRound,            //   63 Runden
    1001                 :            :         ocGetTime,          //   64 Zeit
    1002                 :            :         ocGetHour,          //   65 Stunde
    1003                 :            :         ocGetMin,           //   66 Minute
    1004                 :            :         ocGetSec,           //   67 Sekunde
    1005                 :            :         ocIsValue,          //   68 Ist Zahl?
    1006                 :            :         ocIsString,         //   69 Ist Text?
    1007                 :            :         ocLen,              //   70 Len()
    1008                 :            :         ocValue,            //   71 Val()
    1009                 :            :         ocFixed,            //   72 String()    ocFixed ersatzweise + Spezialfall
    1010                 :            :         ocMid,              //   73 Mid()
    1011                 :            :         ocChar,             //   74 Char()
    1012                 :            :         ocCode,             //   75 Ascii()
    1013                 :            :         ocFind,             //   76 Find()
    1014                 :            :         ocGetDateValue,     //   77 Datevalue
    1015                 :            :         ocGetTimeValue,     //   78 Timevalue
    1016                 :            :         ocNoName,           //   79 Cellpointer
    1017                 :            :         ocSum,              //   80 Sum()
    1018                 :            :         ocAverage,          //   81 Avg()
    1019                 :            :         ocCount,            //   82 Cnt()
    1020                 :            :         ocMin,              //   83 Min()
    1021                 :            :         ocMax,              //   84 Max()
    1022                 :            :         ocVLookup,          //   85 Vlookup()
    1023                 :            :         ocNPV,              //   86 Npv()
    1024                 :            :         ocVar,              //   87 Var()
    1025                 :            :         ocNormDist,         //   88 Std()
    1026                 :            :         ocIRR,              //   89 Irr()
    1027                 :            :         ocHLookup,          //   90 Hlookup()
    1028                 :            :         ocDBSum,            //   91 XlfDsum
    1029                 :            :         ocDBAverage,        //   92 XlfDaverage
    1030                 :            :         ocDBCount,          //   93 XlfDcount
    1031                 :            :         ocDBMin,            //   94 XlfDmin
    1032                 :            :         ocDBMax,            //   95 XlfDmax
    1033                 :            :         ocDBVar,            //   96 XlfDvar
    1034                 :            :         ocDBStdDev,         //   97 XlfDstdev
    1035                 :            :         ocIndex,            //   98 Index()
    1036                 :            :         ocColumns,          //   99 Cols()
    1037                 :            :         ocRows,             //  100 Rows()
    1038                 :            :         ocRept,             //  101 Repeat()
    1039                 :            :         ocUpper,            //  102 Upper()
    1040                 :            :         ocLower,            //  103 Lower()
    1041                 :            :         ocLeft,             //  104 Left()
    1042                 :            :         ocRight,            //  105 Right()
    1043                 :            :         ocReplace,          //  106 Replace()
    1044                 :            :         ocPropper,          //  107 Proper()
    1045                 :            :         ocNoName,           //  108 Cell()
    1046                 :            :         ocTrim,             //  109 Trim()
    1047                 :            :         ocClean,            //  110 Clean()
    1048                 :            :         ocFalse,            //  111 F()
    1049                 :            :         ocTrue,             //  112 W()
    1050                 :            :         ocExact,            //  113 Exact()
    1051                 :            :         ocNoName,           //  114 Call()
    1052                 :            :         ocIndirect,         //  115 @@()
    1053                 :            :         ocZins,             //  116 Rate()
    1054                 :            :         ocNoName,           //  117 Term()
    1055                 :            :         ocNoName,           //  118 Cterm()
    1056                 :            :         ocLIA,              //  119 Sln()
    1057                 :            :         ocDIA,              //  120 Syd(), Soy()
    1058                 :            :         ocGDA,              //  121 Ddb()
    1059                 :            :         ocNoName,           //  122
    1060                 :            :         ocNoName,           //  123
    1061                 :            :         ocNoName,           //  124
    1062                 :            :         ocNoName,           //  125
    1063                 :            :         ocNoName,           //  126
    1064                 :            :         ocNoName,           //  127
    1065                 :            :         ocNoName,           //  128
    1066                 :            :         ocNoName,           //  129
    1067                 :            :         ocNoName,           //  130
    1068                 :            :         ocNoName,           //  131
    1069                 :            :         ocNoName,           //  132
    1070                 :            :         ocNoName,           //  133
    1071                 :            :         ocNoName,           //  134
    1072                 :            :         ocNoName,           //  135
    1073                 :            :         ocNoName,           //  136
    1074                 :            :         ocNoName,           //  137
    1075                 :            :         ocNoName,           //  138
    1076                 :            :         ocNoName,           //  139
    1077                 :            :         ocNoName,           //  140
    1078                 :            :         ocNoName,           //  141
    1079                 :            :         ocNoName,           //  142
    1080                 :            :         ocNoName,           //  143
    1081                 :            :         ocNoName,           //  144
    1082                 :            :         ocNoName,           //  145
    1083                 :            :         ocNoName,           //  146
    1084                 :            :         ocNoName,           //  147
    1085                 :            :         ocNoName,           //  148
    1086                 :            :         ocNoName,           //  149
    1087                 :            :         ocNoName,           //  150
    1088                 :            :         ocNoName,           //  151
    1089                 :            :         ocNoName,           //  152
    1090                 :            :         ocNoName,           //  153
    1091                 :            :         ocNoName,           //  154
    1092                 :            :         ocNoName,           //  155
    1093                 :            :         ocNoName,           //  156 ?
    1094                 :            :         ocNoName,           //  157
    1095                 :            :         ocNoName,           //  158
    1096                 :            :         ocNoName,           //  159
    1097                 :            :         ocNoName,           //  160
    1098                 :            :         ocNoName,           //  161
    1099                 :            :         ocNoName,           //  162
    1100                 :            :         ocNoName,           //  163
    1101                 :            :         ocNoName,           //  164
    1102                 :            :         ocNoName,           //  165
    1103                 :            :         ocNoName,           //  166
    1104                 :            :         ocNoName,           //  167
    1105                 :            :         ocNoName,           //  168
    1106                 :            :         ocNoName,           //  169
    1107                 :            :         ocNoName,           //  170
    1108                 :            :         ocNoName,           //  171
    1109                 :            :         ocNoName,           //  172
    1110                 :            :         ocNoName,           //  173
    1111                 :            :         ocNoName,           //  174
    1112                 :            :         ocNoName,           //  175
    1113                 :            :         ocNoName,           //  176
    1114                 :            :         ocNoName,           //  177
    1115                 :            :         ocNoName,           //  178
    1116                 :            :         ocNoName,           //  179
    1117                 :            :         ocNoName,           //  180
    1118                 :            :         ocNoName,           //  181
    1119                 :            :         ocNoName,           //  182
    1120                 :            :         ocNoName,           //  183
    1121                 :            :         ocNoName,           //  184
    1122                 :            :         ocNoName,           //  185
    1123                 :            :         ocNoName,           //  186
    1124                 :            :         ocNoName,           //  187
    1125                 :            :         ocNoName,           //  188
    1126                 :            :         ocNoName,           //  189
    1127                 :            :         ocNoName,           //  190
    1128                 :            :         ocNoName,           //  191
    1129                 :            :         ocNoName,           //  192
    1130                 :            :         ocNoName,           //  193
    1131                 :            :         ocNoName,           //  194
    1132                 :            :         ocNoName,           //  195
    1133                 :            :         ocNoName,           //  196
    1134                 :            :         ocNoName,           //  197
    1135                 :            :         ocNoName,           //  198
    1136                 :            :         ocNoName,           //  199
    1137                 :            :         ocNoName,           //  200
    1138                 :            :         ocNoName,           //  201
    1139                 :            :         ocNoName,           //  202
    1140                 :            :         ocNoName,           //  203
    1141                 :            :         ocNoName,           //  204
    1142                 :            :         ocNoName,           //  205
    1143                 :            :         ocNoName,           //  206 ?
    1144                 :            :         ocNoName,           //  207
    1145                 :            :         ocNoName,           //  208
    1146                 :            :         ocNoName,           //  209
    1147                 :            :         ocNoName,           //  210
    1148                 :            :         ocNoName,           //  211
    1149                 :            :         ocNoName,           //  212
    1150                 :            :         ocNoName,           //  213
    1151                 :            :         ocNoName,           //  214
    1152                 :            :         ocNoName,           //  215
    1153                 :            :         ocNoName,           //  216
    1154                 :            :         ocNoName,           //  217
    1155                 :            :         ocNoName,           //  218
    1156                 :            :         ocNoName,           //  219
    1157                 :            :         ocNoName,           //  220
    1158                 :            :         ocNoName,           //  221
    1159                 :            :         ocNoName,           //  222
    1160                 :            :         ocNoName,           //  223
    1161                 :            :         ocNoName,           //  224
    1162                 :            :         ocNoName,           //  225
    1163                 :            :         ocNoName,           //  226
    1164                 :            :         ocNoName,           //  227
    1165                 :            :         ocNoName,           //  228
    1166                 :            :         ocNoName,           //  229
    1167                 :            :         ocNoName,           //  230
    1168                 :            :         ocNoName,           //  231
    1169                 :            :         ocNoName,           //  232
    1170                 :            :         ocNoName,           //  233
    1171                 :            :         ocNoName,           //  234
    1172                 :            :         ocNoName,           //  235
    1173                 :            :         ocNoName,           //  236
    1174                 :            :         ocNoName,           //  237
    1175                 :            :         ocNoName,           //  238
    1176                 :            :         ocNoName,           //  239
    1177                 :            :         ocNoName,           //  240
    1178                 :            :         ocNoName,           //  241
    1179                 :            :         ocNoName,           //  242
    1180                 :            :         ocNoName,           //  243
    1181                 :            :         ocNoName,           //  244
    1182                 :            :         ocNoName,           //  245
    1183                 :            :         ocNoName,           //  246
    1184                 :            :         ocNoName,           //  247
    1185                 :            :         ocNoName,           //  248
    1186                 :            :         ocNoName,           //  249
    1187                 :            :         ocNoName,           //  250
    1188                 :            :         ocNoName,           //  251
    1189                 :            :         ocNoName,           //  252
    1190                 :            :         ocNoName,           //  253
    1191                 :            :         ocNoName,           //  254
    1192                 :            :         ocNoName            //  255 ?
    1193                 :            :     };
    1194                 :            : 
    1195                 :          0 :     return pToken[ nIndex ];
    1196                 :            : }
    1197                 :            : 
    1198                 :            : 
    1199                 :          0 : FUNC_TYPE LotusToSc::IndexToTypeWK123( sal_uInt8 nIndex )
    1200                 :            : {
    1201                 :            :     static const FUNC_TYPE pType[ 256 ] =
    1202                 :            :     {                       // Code Bezeichnung
    1203                 :            :         FT_Const10Float,    //    0 8-Byte-IEEE-Long-Number
    1204                 :            :         FT_Cref,            //    1 Cell Reference
    1205                 :            :         FT_Rref,            //    2 Area Reference
    1206                 :            :         FT_Return,          //    3 return
    1207                 :            :         FT_Braces,          //    4 Klammer
    1208                 :            :         FT_Snum,            //    5 Short-Number
    1209                 :            :         FT_ConstString,     //    6 ASCII-String
    1210                 :            :         FT_Nrref,           //    7 Named range reference
    1211                 :            :         FT_Absnref,         //    8 Absolut named range
    1212                 :            :         FT_Erref,           //    9 Err range reference
    1213                 :            :         FT_Ecref,           //   10 Err cell reference
    1214                 :            :         FT_Econstant,       //   11 Err constant
    1215                 :            :         FT_NotImpl,         //   12
    1216                 :            :         FT_NotImpl,         //   13
    1217                 :            :         FT_Neg,             //   14 Negation
    1218                 :            :         FT_Op,              //   15 Addition
    1219                 :            :         FT_Op,              //   16 Subtraktion
    1220                 :            :         FT_Op,              //   17 Multiplikation
    1221                 :            :         FT_Op,              //   18 Division
    1222                 :            :         FT_Op,              //   19 Potenzierung
    1223                 :            :         FT_Op,              //   20 Gleichheit
    1224                 :            :         FT_Op,              //   21 Ungleich
    1225                 :            :         FT_Op,              //   22 Kleiner-gleich
    1226                 :            :         FT_Op,              //   23 Groesser-gleich
    1227                 :            :         FT_Op,              //   24 Kleiner
    1228                 :            :         FT_Op,              //   25 Groesser
    1229                 :            :         FT_Op,              //   26 And (logisch)
    1230                 :            :         FT_Op,              //   27 Or (logisch)
    1231                 :            :         FT_FuncFix1,        //   28 Not (logisch)
    1232                 :            :         FT_NOP,             //   29 unaeres Plus
    1233                 :            :         FT_Op,              //   30 Concatenation
    1234                 :            :         FT_FuncFix0,        //   31 Not applicable
    1235                 :            :         FT_FuncFix0,        //   32 Error
    1236                 :            :         FT_FuncFix1,        //   33 Betrag ABS()
    1237                 :            :         FT_FuncFix1,        //   34 Ganzzahl INT()
    1238                 :            :         FT_FuncFix1,        //   35 Quadratwurzel
    1239                 :            :         FT_FuncFix1,        //   36 Zehnerlogarithmus
    1240                 :            :         FT_FuncFix1,        //   37 Natuerlicher Logarithmus
    1241                 :            :         FT_FuncFix0,        //   38 PI
    1242                 :            :         FT_FuncFix1,        //   39 Sinus
    1243                 :            :         FT_FuncFix1,        //   40 Cosinus
    1244                 :            :         FT_FuncFix1,        //   41 Tangens
    1245                 :            :         FT_FuncFix2,        //   42 Arcus-Tangens 2 (4.Quadrant)
    1246                 :            :         FT_FuncFix1,        //   43 Arcus-Tangens (2.Quadrant)
    1247                 :            :         FT_FuncFix1,        //   44 Arcus-Sinus
    1248                 :            :         FT_FuncFix1,        //   45 Arcus-Cosinus
    1249                 :            :         FT_FuncFix1,        //   46 Exponentialfunktion
    1250                 :            :         FT_FuncFix2,        //   47 Modulo
    1251                 :            :         FT_FuncVar,         //   48 Auswahl
    1252                 :            :         FT_FuncFix1,        //   49 Is not applicable?
    1253                 :            :         FT_FuncFix1,        //   50 Is Error?
    1254                 :            :         FT_FuncFix0,        //   51 FALSE
    1255                 :            :         FT_FuncFix0,        //   52 TRUE
    1256                 :            :         FT_FuncFix0,        //   53 Zufallszahl
    1257                 :            :         FT_FuncFix3,        //   54 Datum
    1258                 :            :         FT_FuncFix0,        //   55 Heute
    1259                 :            :         FT_FuncFix3,        //   56 Payment
    1260                 :            :         FT_FuncFix3,        //   57 Present Value
    1261                 :            :         FT_FuncFix3,        //   58 Future Value
    1262                 :            :         FT_FuncFix3,        //   59 If ... then ... else ...
    1263                 :            :         FT_FuncFix1,        //   60 Tag des Monats
    1264                 :            :         FT_FuncFix1,        //   61 Monat
    1265                 :            :         FT_FuncFix1,        //   62 Jahr
    1266                 :            :         FT_FuncFix2,        //   63 Runden
    1267                 :            :         FT_FuncFix3,        //   64 Zeit
    1268                 :            :         FT_FuncFix1,        //   65 Stunde
    1269                 :            :         FT_FuncFix1,        //   66 Minute
    1270                 :            :         FT_FuncFix1,        //   67 Sekunde
    1271                 :            :         FT_FuncFix1,        //   68 Ist Zahl?
    1272                 :            :         FT_FuncFix1,        //   69 Ist Text?
    1273                 :            :         FT_FuncFix1,        //   70 Len()
    1274                 :            :         FT_FuncFix1,        //   71 Val()
    1275                 :            :         FT_FuncFix2,        //   72 String()
    1276                 :            :         FT_FuncFix3,        //   73 Mid()
    1277                 :            :         FT_FuncFix1,        //   74 Char()
    1278                 :            :         FT_FuncFix1,        //   75 Ascii()
    1279                 :            :         FT_FuncFix3,        //   76 Find()
    1280                 :            :         FT_FuncFix1,        //   77 Datevalue
    1281                 :            :         FT_FuncFix1,        //   78 Timevalue
    1282                 :            :         FT_FuncFix1,        //   79 Cellpointer
    1283                 :            :         FT_FuncVar,         //   80 Sum()
    1284                 :            :         FT_FuncVar,         //   81 Avg()
    1285                 :            :         FT_FuncVar,         //   82 Cnt()
    1286                 :            :         FT_FuncVar,         //   83 Min()
    1287                 :            :         FT_FuncVar,         //   84 Max()
    1288                 :            :         FT_FuncFix3,        //   85 Vlookup()
    1289                 :            :         FT_FuncFix2,        //   86 Npv()
    1290                 :            :         FT_FuncVar,         //   87 Var()
    1291                 :            :         FT_FuncVar,         //   88 Std()
    1292                 :            :         FT_FuncFix2,        //   89 Irr()
    1293                 :            :         FT_FuncFix3,        //   90 Hlookup()
    1294                 :            :         FT_FuncVar,         //   91 Dsum                 <-------- neu! -
    1295                 :            :         FT_FuncVar,         //   92 Davg                 <-------- neu! -
    1296                 :            :         FT_FuncVar,         //   93 Dcnt                 <-------- neu! -
    1297                 :            :         FT_FuncVar,         //   94 Dmin                 <-------- neu! -
    1298                 :            :         FT_FuncVar,         //   95 Dmax                 <-------- neu! -
    1299                 :            :         FT_FuncVar,         //   96 Dvar                 <-------- neu! -
    1300                 :            :         FT_FuncVar,         //   97 Dstd                 <-------- neu! -
    1301                 :            :         FT_FuncVar,         //   98 Index()              <-------- change! -
    1302                 :            :         FT_FuncFix1,        //   99 Cols()               <-------- neu! -
    1303                 :            :         FT_FuncFix1,        //  100 Rows()               <-------- neu! -
    1304                 :            :         FT_FuncFix2,        //  101 Repeat()             <-------- neu! -
    1305                 :            :         FT_FuncFix1,        //  102 Upper()              <-------- neu! -
    1306                 :            :         FT_FuncFix1,        //  103 Lower()              <-------- neu! -
    1307                 :            :         FT_FuncFix2,        //  104 Left()               <-------- neu! -
    1308                 :            :         FT_FuncFix2,        //  105 Right()              <-------- neu! -
    1309                 :            :         FT_FuncFix4,        //  106 Replace()            <-------- neu! -
    1310                 :            :         FT_FuncFix1,        //  107 Proper()             <-------- neu! -
    1311                 :            :         FT_FuncFix2,        //  108 Cell()               <-------- neu! -
    1312                 :            :         FT_FuncFix1,        //  109 Trim()               <-------- neu! -
    1313                 :            :         FT_FuncFix1,        //  110 Clean()              <-------- neu! -
    1314                 :            :         FT_FuncFix1,        //  111 S()                  <--------- change in Bez. -
    1315                 :            :         FT_FuncFix1,        //  112 N()                  <--------- change in Bez. -
    1316                 :            :         FT_FuncFix2,        //  113 Exact()              <-------- neu! -
    1317                 :            :         FT_NotImpl,         //  114 App                  <--------- change in Bez. -
    1318                 :            :         FT_FuncFix1,        //  115 @@()                 <-------- neu! -
    1319                 :            :         FT_FuncFix3,        //  116 Rate()               <-------- neu! -
    1320                 :            :         FT_FuncFix3,        //  117 Term()               <--------- change in Anz.
    1321                 :            :         FT_FuncFix3,        //  118 Cterm()              <--------- change in Anz.
    1322                 :            :         FT_FuncFix3,        //  119 Sln()                <-------- neu! -
    1323                 :            :         FT_FuncFix4,        //  120 Syd()                <-------- neu! -
    1324                 :            :         FT_FuncFix4,        //  121 Ddb()                <-------- neu! -
    1325                 :            :         FT_Splfunc,         //  122 Splfunc              <-------- neu! -
    1326                 :            :         FT_FuncFix1,        //  123 Sheets               <-------- neu! -
    1327                 :            :         FT_FuncFix1,        //  124 Info                 <-------- neu! -
    1328                 :            :         FT_FuncVar,         //  125 Sumproduct           <-------- neu! -
    1329                 :            :         FT_FuncFix1,        //  126 Isrange              <-------- neu! -
    1330                 :            :         FT_FuncVar,         //  127 Dget                 <-------- neu! -
    1331                 :            :         FT_FuncVar,         //  128 Dquery               <-------- neu! -
    1332                 :            :         FT_FuncFix4,        //  129 Coord                <-------- neu! -
    1333                 :            :         FT_NOP,             //  130 Reserved (internal)  <-------- neu! -
    1334                 :            :         FT_FuncFix0,        //  131 Today                <-------- neu! -
    1335                 :            :         FT_FuncVar,         //  132 Vdb                  <-------- neu! -
    1336                 :            :         FT_FuncVar,         //  133 Dvars                <-------- neu! -
    1337                 :            :         FT_FuncVar,         //  134 Dstds                <-------- neu! -
    1338                 :            :         FT_FuncVar,         //  135 Vars                 <-------- neu! -
    1339                 :            :         FT_FuncVar,         //  136 Stds                 <-------- neu! -
    1340                 :            :         FT_FuncFix2,        //  137 D360                 <-------- neu! -
    1341                 :            :         FT_NOP,             //  138 Reserved (internal)  <-------- neu! -
    1342                 :            :         FT_FuncFix0,        //  139 Isapp                <-------- neu! - Anzahl ? -
    1343                 :            :         FT_FuncVar,         //  140 Isaaf                <-------- neu! - Anzahl ? -
    1344                 :            :         FT_FuncFix1,        //  141 Weekday              <-------- neu! -
    1345                 :            :         FT_FuncFix3,        //  142 Datedif              <-------- neu! -
    1346                 :            :         FT_FuncVar,         //  143 Rank                 <-------- neu! -
    1347                 :            :         FT_FuncFix2,        //  144 Numberstring         <-------- neu! -
    1348                 :            :         FT_FuncFix1,        //  145 Datestring           <-------- neu! -
    1349                 :            :         FT_FuncFix1,        //  146 Decimal              <-------- neu! -
    1350                 :            :         FT_FuncFix1,        //  147 Hex                  <-------- neu! -
    1351                 :            :         FT_FuncFix4,        //  148 Db                   <-------- neu! -
    1352                 :            :         FT_FuncFix4,        //  149 Pmti                 <-------- neu! -
    1353                 :            :         FT_FuncFix4,        //  150 Spi                  <-------- neu! -
    1354                 :            :         FT_FuncFix1,        //  151 Fullp                <-------- neu! -
    1355                 :            :         FT_FuncFix1,        //  152 Halfp                <-------- neu! -
    1356                 :            :         FT_FuncVar,         //  153 Pureavg              <-------- neu! -
    1357                 :            :         FT_FuncVar,         //  154 Purecount            <-------- neu! -
    1358                 :            :         FT_FuncVar,         //  155 Puremax              <-------- neu! -
    1359                 :            :         FT_FuncVar,         //  156 Puremin              <-------- neu! -
    1360                 :            :         FT_FuncVar,         //  157 Purestd              <-------- neu! -
    1361                 :            :         FT_FuncVar,         //  158 Purevar              <-------- neu! -
    1362                 :            :         FT_FuncVar,         //  159 Purestds             <-------- neu! -
    1363                 :            :         FT_FuncVar,         //  160 Purevars             <-------- neu! -
    1364                 :            :         FT_FuncFix3,        //  161 Pmt2                 <-------- neu! -
    1365                 :            :         FT_FuncFix3,        //  162 Pv2                  <-------- neu! -
    1366                 :            :         FT_FuncFix3,        //  163 Fv2                  <-------- neu! -
    1367                 :            :         FT_FuncFix3,        //  164 Term2                <-------- neu! -
    1368                 :            :         FT_NotImpl,         //  165 ---                  <-------- neu! - Anzahl ? -
    1369                 :            :         FT_FuncFix2,        //  166 D360 (US-Version)
    1370                 :            :         FT_NotImpl,         //  167
    1371                 :            :         FT_NotImpl,         //  168
    1372                 :            :         FT_NotImpl,         //  169
    1373                 :            :         FT_NotImpl,         //  170
    1374                 :            :         FT_NotImpl,         //  171
    1375                 :            :         FT_NotImpl,         //  172
    1376                 :            :         FT_NotImpl,         //  173
    1377                 :            :         FT_NotImpl,         //  174
    1378                 :            :         FT_NotImpl,         //  175
    1379                 :            :         FT_NotImpl,         //  176
    1380                 :            :         FT_NotImpl,         //  177
    1381                 :            :         FT_NotImpl,         //  178
    1382                 :            :         FT_NotImpl,         //  179
    1383                 :            :         FT_NotImpl,         //  180
    1384                 :            :         FT_NotImpl,         //  181
    1385                 :            :         FT_NotImpl,         //  182
    1386                 :            :         FT_NotImpl,         //  183
    1387                 :            :         FT_NotImpl,         //  184
    1388                 :            :         FT_NotImpl,         //  185
    1389                 :            :         FT_FuncVar,         //  186 Solver               <-------- neu! -
    1390                 :            :         FT_NotImpl,         //  187
    1391                 :            :         FT_NotImpl,         //  188
    1392                 :            :         FT_NotImpl,         //  189
    1393                 :            :         FT_NotImpl,         //  190
    1394                 :            :         FT_NotImpl,         //  191
    1395                 :            :         FT_NotImpl,         //  192
    1396                 :            :         FT_NotImpl,         //  193
    1397                 :            :         FT_NotImpl,         //  194
    1398                 :            :         FT_NotImpl,         //  195
    1399                 :            :         FT_NotImpl,         //  196
    1400                 :            :         FT_NotImpl,         //  197
    1401                 :            :         FT_NotImpl,         //  198
    1402                 :            :         FT_NotImpl,         //  199
    1403                 :            :         FT_NotImpl,         //  200
    1404                 :            :         FT_NotImpl,         //  201
    1405                 :            :         FT_NotImpl,         //  202
    1406                 :            :         FT_NotImpl,         //  203
    1407                 :            :         FT_NotImpl,         //  204
    1408                 :            :         FT_NotImpl,         //  205
    1409                 :            :         FT_NotImpl,         //  206
    1410                 :            :         FT_NotImpl,         //  207
    1411                 :            :         FT_NotImpl,         //  208
    1412                 :            :         FT_NotImpl,         //  209
    1413                 :            :         FT_NotImpl,         //  210
    1414                 :            :         FT_NotImpl,         //  211
    1415                 :            :         FT_NotImpl,         //  212
    1416                 :            :         FT_NotImpl,         //  213
    1417                 :            :         FT_NotImpl,         //  214
    1418                 :            :         FT_NotImpl,         //  215
    1419                 :            :         FT_NotImpl,         //  216
    1420                 :            :         FT_NotImpl,         //  217
    1421                 :            :         FT_NotImpl,         //  218
    1422                 :            :         FT_NotImpl,         //  219
    1423                 :            :         FT_NotImpl,         //  220
    1424                 :            :         FT_NotImpl,         //  221
    1425                 :            :         FT_NotImpl,         //  222
    1426                 :            :         FT_NotImpl,         //  223
    1427                 :            :         FT_NotImpl,         //  224
    1428                 :            :         FT_NotImpl,         //  225
    1429                 :            :         FT_NotImpl,         //  226
    1430                 :            :         FT_NotImpl,         //  227
    1431                 :            :         FT_NotImpl,         //  228
    1432                 :            :         FT_NotImpl,         //  229
    1433                 :            :         FT_NotImpl,         //  230
    1434                 :            :         FT_NotImpl,         //  231
    1435                 :            :         FT_NotImpl,         //  232
    1436                 :            :         FT_NotImpl,         //  233
    1437                 :            :         FT_NotImpl,         //  234
    1438                 :            :         FT_NotImpl,         //  235
    1439                 :            :         FT_NotImpl,         //  236
    1440                 :            :         FT_NotImpl,         //  237
    1441                 :            :         FT_NotImpl,         //  238
    1442                 :            :         FT_NotImpl,         //  239
    1443                 :            :         FT_NotImpl,         //  240
    1444                 :            :         FT_NotImpl,         //  241
    1445                 :            :         FT_NotImpl,         //  242
    1446                 :            :         FT_NotImpl,         //  243
    1447                 :            :         FT_NotImpl,         //  244
    1448                 :            :         FT_NotImpl,         //  245
    1449                 :            :         FT_NotImpl,         //  246
    1450                 :            :         FT_NotImpl,         //  247
    1451                 :            :         FT_NotImpl,         //  248
    1452                 :            :         FT_NotImpl,         //  249
    1453                 :            :         FT_NotImpl,         //  250
    1454                 :            :         FT_NotImpl,         //  251
    1455                 :            :         FT_NotImpl,         //  252
    1456                 :            :         FT_NotImpl,         //  253
    1457                 :            :         FT_NotImpl,         //  254
    1458                 :            :         FT_NotImpl,         //  255
    1459                 :            :     };
    1460                 :          0 :     return pType[ nIndex ];
    1461                 :            : }
    1462                 :            : 
    1463                 :            : 
    1464                 :          0 : DefTokenId LotusToSc::IndexToTokenWK123( sal_uInt8 nIndex )
    1465                 :            : {
    1466                 :            :     static const DefTokenId pToken[ 256 ] =
    1467                 :            :     {                       // Code Bezeichnung
    1468                 :            :         ocPush,             //    0 8-Byte-IEEE-Long-Numbers
    1469                 :            :         ocPush,             //    1 Variable
    1470                 :            :         ocPush,             //    2 Bereich
    1471                 :            :         ocPush,             //    3 return
    1472                 :            :         ocPush,             //    4 Klammer
    1473                 :            :         ocPush,             //    5 Numbers
    1474                 :            :         ocPush,             //    6 ASCII-String
    1475                 :            :         ocPush,             //    7 Named range reference
    1476                 :            :         ocPush,             //    8 Absolut named range
    1477                 :            :         ocPush,             //    9 Err range reference
    1478                 :            :         ocPush,             //   10 Err cell reference
    1479                 :            :         ocPush,             //   11 Err constant
    1480                 :            :         ocPush,             //   12
    1481                 :            :         ocPush,             //   13
    1482                 :            :         ocNegSub,           //   14 Negation
    1483                 :            :         ocAdd,              //   15 Addition
    1484                 :            :         ocSub,              //   16 Subtraktion
    1485                 :            :         ocMul,              //   17 Multiplikation
    1486                 :            :         ocDiv,              //   18 Division
    1487                 :            :         ocPow,              //   19 Potenzierung
    1488                 :            :         ocEqual,            //   20 Gleichheit
    1489                 :            :         ocNotEqual,         //   21 Ungleich
    1490                 :            :         ocLessEqual,        //   22 Kleiner-gleich
    1491                 :            :         ocGreaterEqual,     //   23 Groesser-gleich
    1492                 :            :         ocLess,             //   24 Kleiner
    1493                 :            :         ocGreater,          //   25 Groesser
    1494                 :            :         ocAnd,              //   26 And (logisch)
    1495                 :            :         ocOr,               //   27 Or (logisch)
    1496                 :            :         ocNot,              //   28 Not (logisch)
    1497                 :            :         ocPush,             //   29 unaeres Plus
    1498                 :            :         ocAmpersand,        //   30 Concatenation
    1499                 :            :         ocNotAvail,         //   31 Not available
    1500                 :            :         ocNoName,           //   32 Error
    1501                 :            :         ocAbs,              //   33 Betrag ABS()
    1502                 :            :         ocInt,              //   34 Ganzzahl INT()
    1503                 :            :         ocSqrt,             //   35 Quadratwurzel
    1504                 :            :         ocLog10,            //   36 Zehnerlogarithmus
    1505                 :            :         ocLn,               //   37 Natuerlicher Logarithmus
    1506                 :            :         ocPi,               //   38 PI
    1507                 :            :         ocSin,              //   39 Sinus
    1508                 :            :         ocCos,              //   40 Cosinus
    1509                 :            :         ocTan,              //   41 Tangens
    1510                 :            :         ocArcTan2,          //   42 Arcus-Tangens 2 (4.Quadrant)
    1511                 :            :         ocArcTan,           //   43 Arcus-Tangens (2.Quadrant)
    1512                 :            :         ocArcSin,           //   44 Arcus-Sinus
    1513                 :            :         ocArcCos,           //   45 Arcus-Cosinus
    1514                 :            :         ocExp,              //   46 Exponentialfunktion
    1515                 :            :         ocMod,              //   47 Modulo
    1516                 :            :         ocChose,            //   48 Auswahl
    1517                 :            :         ocIsNA,             //   49 Is not available?
    1518                 :            :         ocIsError,          //   50 Is Error?
    1519                 :            :         ocFalse,            //   51 FALSE
    1520                 :            :         ocTrue,             //   52 TRUE
    1521                 :            :         ocRandom,           //   53 Zufallszahl
    1522                 :            :         ocGetDate,          //   54 Datum
    1523                 :            :         ocGetActDate,       //   55 Heute
    1524                 :            :         ocRMZ,              //   56 Payment
    1525                 :            :         ocBW,               //   57 Present Value
    1526                 :            :         ocZW,               //   58 Future Value
    1527                 :            :         ocIf,               //   59 If ... then ... else ...
    1528                 :            :         ocGetDay,           //   60 Tag des Monats
    1529                 :            :         ocGetMonth,         //   61 Monat
    1530                 :            :         ocGetYear,          //   62 Jahr
    1531                 :            :         ocRound,            //   63 Runden
    1532                 :            :         ocGetTime,          //   64 Zeit
    1533                 :            :         ocGetHour,          //   65 Stunde
    1534                 :            :         ocGetMin,           //   66 Minute
    1535                 :            :         ocGetSec,           //   67 Sekunde
    1536                 :            :         ocIsValue,          //   68 Ist Zahl?
    1537                 :            :         ocIsString,         //   69 Ist Text?
    1538                 :            :         ocLen,              //   70 Len()
    1539                 :            :         ocValue,            //   71 Val()
    1540                 :            :         ocFixed,            //   72 String()    ocFixed ersatzweise + Spezialfall
    1541                 :            :         ocMid,              //   73 Mid()
    1542                 :            :         ocChar,             //   74 Char()
    1543                 :            :         ocCode,             //   75 Ascii()
    1544                 :            :         ocFind,             //   76 Find()
    1545                 :            :         ocGetDateValue,     //   77 Datevalue
    1546                 :            :         ocGetTimeValue,     //   78 Timevalue
    1547                 :            :         ocNoName,           //   79 Cellpointer
    1548                 :            :         ocSum,              //   80 Sum()
    1549                 :            :         ocAverage,          //   81 Avg()
    1550                 :            :         ocCount,            //   82 Cnt()
    1551                 :            :         ocMin,              //   83 Min()
    1552                 :            :         ocMax,              //   84 Max()
    1553                 :            :         ocVLookup,          //   85 Vlookup()
    1554                 :            :         ocNPV,              //   86 Npv()
    1555                 :            :         ocVar,              //   87 Var()
    1556                 :            :         ocStDev,            //   88 Std()
    1557                 :            :         ocIRR,              //   89 Irr()
    1558                 :            :         ocHLookup,          //   90 Hlookup()
    1559                 :            :         ocDBSum,            //   91 XlfDsum
    1560                 :            :         ocDBAverage,        //   92 XlfDaverage
    1561                 :            :         ocDBCount,          //   93 XlfDcount
    1562                 :            :         ocDBMin,            //   94 XlfDmin
    1563                 :            :         ocDBMax,            //   95 XlfDmax
    1564                 :            :         ocDBVar,            //   96 XlfDvar
    1565                 :            :         ocDBStdDev,         //   97 XlfDstdev
    1566                 :            :         ocIndex,            //   98 Index()
    1567                 :            :         ocColumns,          //   99 Cols()
    1568                 :            :         ocRows,             //  100 Rows()
    1569                 :            :         ocRept,             //  101 Repeat()
    1570                 :            :         ocUpper,            //  102 Upper()
    1571                 :            :         ocLower,            //  103 Lower()
    1572                 :            :         ocLeft,             //  104 Left()
    1573                 :            :         ocRight,            //  105 Right()
    1574                 :            :         ocReplace,          //  106 Replace()
    1575                 :            :         ocPropper,          //  107 Proper()
    1576                 :            :         ocNoName,           //  108 Cell()
    1577                 :            :         ocTrim,             //  109 Trim()
    1578                 :            :         ocClean,            //  110 Clean()
    1579                 :            :         ocNoName,           //  111 F()     (Excel: T()?)
    1580                 :            :         ocNoName,           //  112 W()
    1581                 :            :         ocExact,            //  113 Exact()
    1582                 :            :         ocNoName,           //  114 Call()
    1583                 :            :         ocIndirect,         //  115 @@()
    1584                 :            :         ocZins,             //  116 Rate()
    1585                 :            :         ocNoName,           //  117 Term()
    1586                 :            :         ocNoName,           //  118 Cterm()
    1587                 :            :         ocLIA,              //  119 Sln()
    1588                 :            :         ocDIA,              //  120 Syd(), Soy()
    1589                 :            :         ocGDA,              //  121 Ddb()
    1590                 :            :         ocNoName,           //  122 Splfunc
    1591                 :            :         ocNoName,           //  123 Sheets
    1592                 :            :         ocNoName,           //  124 Info
    1593                 :            :         ocSumProduct,       //  125 Sumproduct
    1594                 :            :         ocNoName,           //  126 Isrange
    1595                 :            :         ocDBGet,            //  127 Dget
    1596                 :            :         ocNoName,           //  128 Dquery
    1597                 :            :         ocNoName,           //  129 Coord
    1598                 :            :         ocNoName,           //  130 Reserved (internal)
    1599                 :            :         ocGetActDate,       //  131 Today
    1600                 :            :         ocNoName,           //  132 Vdb
    1601                 :            :         ocDBVarP,           //  133 Dvars
    1602                 :            :         ocDBStdDevP,        //  134 Dstds
    1603                 :            :         ocVarP,             //  135 Vars
    1604                 :            :         ocStDevP,           //  136 Stds
    1605                 :            :         ocGetDiffDate360,   //  137 D360
    1606                 :            :         ocNoName,           //  138 Reserved (internal)
    1607                 :            :         ocNoName,           //  139 Isapp
    1608                 :            :         ocNoName,           //  140 Isaaf
    1609                 :            :         ocGetDayOfWeek,     //  141 Weekday
    1610                 :            :         ocGetDiffDate,      //  142 Datedif
    1611                 :            :         ocRank,             //  143 Rank
    1612                 :            :         ocNoName,           //  144 Numberstring
    1613                 :            :         ocNoName,           //  145 Datestring
    1614                 :            :         ocNoName,           //  146 Decimal
    1615                 :            :         ocNoName,           //  147 Hex
    1616                 :            :         ocNoName,           //  148 Db
    1617                 :            :         ocNoName,           //  149 Pmti
    1618                 :            :         ocNoName,           //  150 Spi
    1619                 :            :         ocNoName,           //  151 Fullp
    1620                 :            :         ocNoName,           //  152 Halfp
    1621                 :            :         ocNoName,           //  153 Pureavg
    1622                 :            :         ocCount2,           //  154 Purecount
    1623                 :            :         ocNoName,           //  155 Puremax
    1624                 :            :         ocNoName,           //  156 Puremin
    1625                 :            :         ocNoName,           //  157 Purestd
    1626                 :            :         ocNoName,           //  158 Purevar
    1627                 :            :         ocNoName,           //  159 Purestds
    1628                 :            :         ocNoName,           //  160 Purevars
    1629                 :            :         ocNoName,           //  161 Pmt2
    1630                 :            :         ocNoName,           //  162 Pv2
    1631                 :            :         ocNoName,           //  163 Fv2
    1632                 :            :         ocNoName,           //  164 Term2
    1633                 :            :         ocNoName,           //  165 ---                  <-------- neu! - Anzahl ? -
    1634                 :            :         ocGetDiffDate360,   //  166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
    1635                 :            :         ocNoName,           //  167
    1636                 :            :         ocNoName,           //  168
    1637                 :            :         ocNoName,           //  169
    1638                 :            :         ocNoName,           //  170
    1639                 :            :         ocNoName,           //  171
    1640                 :            :         ocNoName,           //  172
    1641                 :            :         ocNoName,           //  173
    1642                 :            :         ocNoName,           //  174
    1643                 :            :         ocNoName,           //  175
    1644                 :            :         ocNoName,           //  176
    1645                 :            :         ocNoName,           //  177
    1646                 :            :         ocNoName,           //  178
    1647                 :            :         ocNoName,           //  179
    1648                 :            :         ocNoName,           //  180
    1649                 :            :         ocNoName,           //  181
    1650                 :            :         ocNoName,           //  182
    1651                 :            :         ocNoName,           //  183
    1652                 :            :         ocNoName,           //  184
    1653                 :            :         ocNoName,           //  185
    1654                 :            :         ocNoName,           //  186
    1655                 :            :         ocNoName,           //  187
    1656                 :            :         ocNoName,           //  188
    1657                 :            :         ocNoName,           //  189
    1658                 :            :         ocNoName,           //  190
    1659                 :            :         ocNoName,           //  191
    1660                 :            :         ocNoName,           //  192
    1661                 :            :         ocNoName,           //  193
    1662                 :            :         ocNoName,           //  194
    1663                 :            :         ocNoName,           //  195
    1664                 :            :         ocNoName,           //  196
    1665                 :            :         ocNoName,           //  197
    1666                 :            :         ocNoName,           //  198
    1667                 :            :         ocNoName,           //  199
    1668                 :            :         ocNoName,           //  200
    1669                 :            :         ocNoName,           //  201
    1670                 :            :         ocNoName,           //  202
    1671                 :            :         ocNoName,           //  203
    1672                 :            :         ocNoName,           //  204
    1673                 :            :         ocNoName,           //  205
    1674                 :            :         ocNoName,           //  206 ?
    1675                 :            :         ocNoName,           //  207
    1676                 :            :         ocNoName,           //  208
    1677                 :            :         ocNoName,           //  209
    1678                 :            :         ocNoName,           //  210
    1679                 :            :         ocNoName,           //  211
    1680                 :            :         ocNoName,           //  212
    1681                 :            :         ocNoName,           //  213
    1682                 :            :         ocNoName,           //  214
    1683                 :            :         ocNoName,           //  215
    1684                 :            :         ocNoName,           //  216
    1685                 :            :         ocNoName,           //  217
    1686                 :            :         ocNoName,           //  218
    1687                 :            :         ocNoName,           //  219
    1688                 :            :         ocNoName,           //  220
    1689                 :            :         ocNoName,           //  221
    1690                 :            :         ocNoName,           //  222
    1691                 :            :         ocNoName,           //  223
    1692                 :            :         ocNoName,           //  224
    1693                 :            :         ocNoName,           //  225
    1694                 :            :         ocNoName,           //  226
    1695                 :            :         ocNoName,           //  227
    1696                 :            :         ocNoName,           //  228
    1697                 :            :         ocNoName,           //  229
    1698                 :            :         ocNoName,           //  230
    1699                 :            :         ocNoName,           //  231
    1700                 :            :         ocNoName,           //  232
    1701                 :            :         ocNoName,           //  233
    1702                 :            :         ocNoName,           //  234
    1703                 :            :         ocNoName,           //  235
    1704                 :            :         ocNoName,           //  236
    1705                 :            :         ocNoName,           //  237
    1706                 :            :         ocNoName,           //  238
    1707                 :            :         ocNoName,           //  239
    1708                 :            :         ocNoName,           //  240
    1709                 :            :         ocNoName,           //  241
    1710                 :            :         ocNoName,           //  242
    1711                 :            :         ocNoName,           //  243
    1712                 :            :         ocNoName,           //  244
    1713                 :            :         ocNoName,           //  245
    1714                 :            :         ocNoName,           //  246
    1715                 :            :         ocNoName,           //  247
    1716                 :            :         ocNoName,           //  248
    1717                 :            :         ocNoName,           //  249
    1718                 :            :         ocNoName,           //  250
    1719                 :            :         ocNoName,           //  251
    1720                 :            :         ocNoName,           //  252
    1721                 :            :         ocNoName,           //  253
    1722                 :            :         ocNoName,           //  254
    1723                 :            :         ocNoName            //  255 ?
    1724                 :            :     };
    1725                 :            : 
    1726                 :          0 :     return pToken[ nIndex ];
    1727                 :            : }
    1728                 :            : 
    1729                 :            : 
    1730                 :            : 
    1731                 :            : 
    1732                 :          0 : const sal_Char* GetAddInName( const sal_uInt8 n )
    1733                 :            : {
    1734                 :            :     static const sal_Char*  pNames[ 256 ] =
    1735                 :            :     {
    1736                 :            :         NULL,                       //    0 8-Byte-IEEE-Float
    1737                 :            :         NULL,                       //    1 Variable
    1738                 :            :         NULL,                       //    2 Bereich
    1739                 :            :         NULL,                       //    3 return
    1740                 :            :         NULL,                       //    4 Klammer
    1741                 :            :         NULL,                       //    5 2-Byte-Integer
    1742                 :            :         NULL,                       //    6 ASCII-String
    1743                 :            :         NULL,                       //    7 Named range reference
    1744                 :            :         NULL,                       //    8 Absolut named range
    1745                 :            :         NULL,                       //    9 Err range reference
    1746                 :            :         NULL,                       //   10 Err cell reference
    1747                 :            :         NULL,                       //   11 Err constant
    1748                 :            :         NULL,                       //   12
    1749                 :            :         NULL,                       //   13
    1750                 :            :         NULL,                       //   14 Negation
    1751                 :            :         NULL,                       //   15 Addition
    1752                 :            :         NULL,                       //   16 Subtraktion
    1753                 :            :         NULL,                       //   17 Multiplikation
    1754                 :            :         NULL,                       //   18 Division
    1755                 :            :         NULL,                       //   19 Potenzierung
    1756                 :            :         NULL,                       //   20 Gleichheit
    1757                 :            :         NULL,                       //   21 Ungleich
    1758                 :            :         NULL,                       //   22 Kleiner-gleich
    1759                 :            :         NULL,                       //   23 Groesser-gleich
    1760                 :            :         NULL,                       //   24 Kleiner
    1761                 :            :         NULL,                       //   25 Groesser
    1762                 :            :         NULL,                       //   26 And (logisch)
    1763                 :            :         NULL,                       //   27 Or (logisch)
    1764                 :            :         NULL,                       //   28 Not (logisch)
    1765                 :            :         NULL,                       //   29 unaeres Plus
    1766                 :            :         NULL,                       //   30 Concatenation
    1767                 :            :         NULL,                       //   31 Not applicable
    1768                 :            :         NULL,                       //   32 Error
    1769                 :            :         NULL,                       //   33 Betrag ABS()
    1770                 :            :         NULL,                       //   34 Ganzzahl INT()
    1771                 :            :         NULL,                       //   35 Quadratwurzel
    1772                 :            :         NULL,                       //   36 Zehnerlogarithmus
    1773                 :            :         NULL,                       //   37 Natuerlicher Logarithmus
    1774                 :            :         NULL,                       //   38 PI
    1775                 :            :         NULL,                       //   39 Sinus
    1776                 :            :         NULL,                       //   40 Cosinus
    1777                 :            :         NULL,                       //   41 Tangens
    1778                 :            :         NULL,                       //   42 Arcus-Tangens 2 (4.Quadrant)
    1779                 :            :         NULL,                       //   43 Arcus-Tangens (2.Quadrant)
    1780                 :            :         NULL,                       //   44 Arcus-Sinus
    1781                 :            :         NULL,                       //   45 Arcus-Cosinus
    1782                 :            :         NULL,                       //   46 Exponentialfunktion
    1783                 :            :         NULL,                       //   47 Modulo
    1784                 :            :         NULL,                       //   48 Auswahl
    1785                 :            :         NULL,                       //   49 Is not applicable?
    1786                 :            :         NULL,                       //   50 Is Error?
    1787                 :            :         NULL,                       //   51 FALSE
    1788                 :            :         NULL,                       //   52 TRUE
    1789                 :            :         NULL,                       //   53 Zufallszahl
    1790                 :            :         NULL,                       //   54 Datum
    1791                 :            :         NULL,                       //   55 Heute
    1792                 :            :         NULL,                       //   56 Payment
    1793                 :            :         NULL,                       //   57 Present Value
    1794                 :            :         NULL,                       //   58 Future Value
    1795                 :            :         NULL,                       //   59 If ... then ... else ...
    1796                 :            :         NULL,                       //   60 Tag des Monats
    1797                 :            :         NULL,                       //   61 Monat
    1798                 :            :         NULL,                       //   62 Jahr
    1799                 :            :         NULL,                       //   63 Runden
    1800                 :            :         NULL,                       //   64 Zeit
    1801                 :            :         NULL,                       //   65 Stunde
    1802                 :            :         NULL,                       //   66 Minute
    1803                 :            :         NULL,                       //   67 Sekunde
    1804                 :            :         NULL,                       //   68 Ist Zahl?
    1805                 :            :         NULL,                       //   69 Ist Text?
    1806                 :            :         NULL,                       //   70 Len()
    1807                 :            :         NULL,                       //   71 Val()
    1808                 :            :         NULL,                       //   72 String()    ocFixed ersatzweise + Spezialfall
    1809                 :            :         NULL,                       //   73 Mid()
    1810                 :            :         NULL,                       //   74 Char()
    1811                 :            :         NULL,                       //   75 Ascii()
    1812                 :            :         NULL,                       //   76 Find()
    1813                 :            :         NULL,                       //   77 Datevalue
    1814                 :            :         NULL,                       //   78 Timevalue
    1815                 :            :         "ZELLZEIGER",               //   79 Cellpointer
    1816                 :            :         NULL,                       //   80 Sum()
    1817                 :            :         NULL,                       //   81 Avg()
    1818                 :            :         NULL,                       //   82 Cnt()
    1819                 :            :         NULL,                       //   83 Min()
    1820                 :            :         NULL,                       //   84 Max()
    1821                 :            :         NULL,                       //   85 Vlookup()
    1822                 :            :         NULL,                       //   86 Npv()
    1823                 :            :         NULL,                       //   87 Var()
    1824                 :            :         NULL,                       //   88 Std()
    1825                 :            :         NULL,                       //   89 Irr()
    1826                 :            :         NULL,                       //   90 Hlookup()
    1827                 :            :         NULL,                       //   91 XlfDsum
    1828                 :            :         NULL,                       //   92 XlfDaverage
    1829                 :            :         NULL,                       //   93 XlfDcount
    1830                 :            :         NULL,                       //   94 XlfDmin
    1831                 :            :         NULL,                       //   95 XlfDmax
    1832                 :            :         NULL,                       //   96 XlfDvar
    1833                 :            :         NULL,                       //   97 XlfDstdev
    1834                 :            :         NULL,                       //   98 Index()
    1835                 :            :         NULL,                       //   99 Cols()
    1836                 :            :         NULL,                       //  100 Rows()
    1837                 :            :         NULL,                       //  101 Repeat()
    1838                 :            :         NULL,                       //  102 Upper()
    1839                 :            :         NULL,                       //  103 Lower()
    1840                 :            :         NULL,                       //  104 Left()
    1841                 :            :         NULL,                       //  105 Right()
    1842                 :            :         NULL,                       //  106 Replace()
    1843                 :            :         NULL,                       //  107 Proper()
    1844                 :            :         "ZELLE",                    //  108 Cell()
    1845                 :            :         NULL,                       //  109 Trim()
    1846                 :            :         NULL,                       //  110 Clean()
    1847                 :            :         "F",                        //  111 F()     (Excel: T()?)
    1848                 :            :         "W",                        //  112 W()
    1849                 :            :         NULL,                       //  113 Exact()
    1850                 :            :         NULL,                       //  114 Call()
    1851                 :            :         NULL,                       //  115 @@()
    1852                 :            :         NULL,                       //  116 Rate()
    1853                 :            :         "ANN",                      //  117 Term()
    1854                 :            :         NULL,                       //  118 Cterm()
    1855                 :            :         NULL,                       //  119 Sln()
    1856                 :            :         NULL,                       //  120 Syd(), Soy()
    1857                 :            :         NULL,                       //  121 Ddb()
    1858                 :            :         "SplFunc",                  //  122 Splfunc
    1859                 :            :         "BLAETTER",                 //  123 Sheets
    1860                 :            :         "INFO",                     //  124 Info
    1861                 :            :         NULL,                       //  125 Sumproduct
    1862                 :            :         "ISTBEREICH",               //  126 Isrange
    1863                 :            :         NULL,                       //  127 Dget
    1864                 :            :         "DABFRAGE",                 //  128 Dquery
    1865                 :            :         "KOORD",                    //  129 Coord
    1866                 :            :         NULL,                       //  130 Reserved (internal)
    1867                 :            :         NULL,                       //  131 Today
    1868                 :            :         NULL,                       //  132 Vdb
    1869                 :            :         NULL,                       //  133 Dvars
    1870                 :            :         NULL,                       //  134 Dstds
    1871                 :            :         NULL,                       //  135 Vars
    1872                 :            :         NULL,                       //  136 Stds
    1873                 :            :         NULL,                       //  137 D360
    1874                 :            :         NULL,                       //  138 Reserved (internal)
    1875                 :            :         NULL,                       //  139 Isapp
    1876                 :            :         "ISTDEFZUS",                //  140 Isaaf
    1877                 :            :         NULL,                       //  141 Weekday
    1878                 :            :         NULL,                       //  142 Datedif
    1879                 :            :         NULL,                       //  143 Rank
    1880                 :            :         NULL,                       //  144 Numberstring
    1881                 :            :         "DATUMFOLGE",               //  145 Datestring
    1882                 :            :         "DEZIMAL",                  //  146 Decimal
    1883                 :            :         "HEX",                      //  147 Hex
    1884                 :            :         NULL,                       //  148 Db
    1885                 :            :         NULL,                       //  149 Pmti
    1886                 :            :         NULL,                       //  150 Spi
    1887                 :            :         NULL,                       //  151 Fullp
    1888                 :            :         NULL,                       //  152 Halfp
    1889                 :            :         "PURMITTELWERT",            //  153 Pureavg
    1890                 :            :         "PURANZAHL",                //  154 Purecount
    1891                 :            :         "PURMAX",                   //  155 Puremax
    1892                 :            :         "PURMIN",                   //  156 Puremin
    1893                 :            :         "PURSTDABW",                //  157 Purestd
    1894                 :            :         "PURVAR",                   //  158 Purevar
    1895                 :            :         "PURSTDABWP",               //  159 Purestds
    1896                 :            :         "PURVARP",                  //  160 Purevars
    1897                 :            :         NULL,                       //  161 Pmt2
    1898                 :            :         NULL,                       //  162 Pv2
    1899                 :            :         NULL,                       //  163 Fv2
    1900                 :            :         NULL,                       //  164 Term2
    1901                 :            :         NULL,                       //  165 ---                  <-------- neu! - Anzahl ? -
    1902                 :            :         NULL,                       //  166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
    1903                 :            :         NULL,                       //  167
    1904                 :            :         NULL,                       //  168
    1905                 :            :         NULL,                       //  169
    1906                 :            :         NULL,                       //  170
    1907                 :            :         NULL,                       //  171
    1908                 :            :         NULL,                       //  172
    1909                 :            :         NULL,                       //  173
    1910                 :            :         NULL,                       //  174
    1911                 :            :         NULL,                       //  175
    1912                 :            :         NULL,                       //  176
    1913                 :            :         NULL,                       //  177
    1914                 :            :         NULL,                       //  178
    1915                 :            :         NULL,                       //  179
    1916                 :            :         NULL,                       //  180
    1917                 :            :         NULL,                       //  181
    1918                 :            :         NULL,                       //  182
    1919                 :            :         NULL,                       //  183
    1920                 :            :         NULL,                       //  184
    1921                 :            :         NULL,                       //  185
    1922                 :            :         NULL,                       //  186
    1923                 :            :         NULL,                       //  187
    1924                 :            :         NULL,                       //  188
    1925                 :            :         NULL,                       //  189
    1926                 :            :         NULL,                       //  190
    1927                 :            :         NULL,                       //  191
    1928                 :            :         NULL,                       //  192
    1929                 :            :         NULL,                       //  193
    1930                 :            :         NULL,                       //  194
    1931                 :            :         NULL,                       //  195
    1932                 :            :         NULL,                       //  196
    1933                 :            :         NULL,                       //  197
    1934                 :            :         NULL,                       //  198
    1935                 :            :         NULL,                       //  199
    1936                 :            :         NULL,                       //  200
    1937                 :            :         NULL,                       //  201
    1938                 :            :         NULL,                       //  202
    1939                 :            :         NULL,                       //  203
    1940                 :            :         NULL,                       //  204
    1941                 :            :         NULL,                       //  205
    1942                 :            :         NULL,                       //  206 ?
    1943                 :            :         NULL,                       //  207
    1944                 :            :         NULL,                       //  208
    1945                 :            :         NULL,                       //  209
    1946                 :            :         NULL,                       //  210
    1947                 :            :         NULL,                       //  211
    1948                 :            :         NULL,                       //  212
    1949                 :            :         NULL,                       //  213
    1950                 :            :         NULL,                       //  214
    1951                 :            :         NULL,                       //  215
    1952                 :            :         NULL,                       //  216
    1953                 :            :         NULL,                       //  217
    1954                 :            :         NULL,                       //  218
    1955                 :            :         NULL,                       //  219
    1956                 :            :         NULL,                       //  220
    1957                 :            :         NULL,                       //  221
    1958                 :            :         NULL,                       //  222
    1959                 :            :         NULL,                       //  223
    1960                 :            :         NULL,                       //  224
    1961                 :            :         NULL,                       //  225
    1962                 :            :         NULL,                       //  226
    1963                 :            :         NULL,                       //  227
    1964                 :            :         NULL,                       //  228
    1965                 :            :         NULL,                       //  229
    1966                 :            :         NULL,                       //  230
    1967                 :            :         NULL,                       //  231
    1968                 :            :         NULL,                       //  232
    1969                 :            :         NULL,                       //  233
    1970                 :            :         NULL,                       //  234
    1971                 :            :         NULL,                       //  235
    1972                 :            :         NULL,                       //  236
    1973                 :            :         NULL,                       //  237
    1974                 :            :         NULL,                       //  238
    1975                 :            :         NULL,                       //  239
    1976                 :            :         NULL,                       //  240
    1977                 :            :         NULL,                       //  241
    1978                 :            :         NULL,                       //  242
    1979                 :            :         NULL,                       //  243
    1980                 :            :         NULL,                       //  244
    1981                 :            :         NULL,                       //  245
    1982                 :            :         NULL,                       //  246
    1983                 :            :         NULL,                       //  247
    1984                 :            :         NULL,                       //  248
    1985                 :            :         NULL,                       //  249
    1986                 :            :         NULL,                       //  250
    1987                 :            :         NULL,                       //  251
    1988                 :            :         NULL,                       //  252
    1989                 :            :         NULL,                       //  253
    1990                 :            :         NULL,                       //  254
    1991                 :            :         NULL                        //  255 ?
    1992                 :            :     };
    1993                 :            : 
    1994                 :          0 :     return pNames[ n ];
    1995                 :            : }
    1996                 :            : 
    1997                 :            : 
    1998                 :          0 : static DefTokenId lcl_KnownAddIn( const rtl::OString& rTest )
    1999                 :            : {
    2000                 :          0 :     DefTokenId  eId = ocNoName;
    2001                 :            : 
    2002         [ #  # ]:          0 :     if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("FACT")))
    2003                 :          0 :             eId = ocFact;
    2004         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ISEMPTY")))
    2005                 :          0 :             eId=ocIsEmpty;
    2006         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("DEGTORAD")))
    2007                 :          0 :             eId=ocRad;
    2008         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("RADTODEG")))
    2009                 :          0 :             eId=ocDeg;
    2010         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SIGN")))
    2011                 :          0 :             eId=ocPlusMinus;
    2012         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOSH")))
    2013                 :          0 :             eId=ocArcCosHyp;
    2014         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOTH")))
    2015                 :          0 :             eId=ocArcCotHyp;
    2016         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ASINH")))
    2017                 :          0 :             eId=ocArcSinHyp;
    2018         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ATANH")))
    2019                 :          0 :             eId=ocArcTanHyp;
    2020         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COSH")))
    2021                 :          0 :             eId=ocCosHyp;
    2022         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COTH")))
    2023                 :          0 :             eId=ocCotHyp;
    2024         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SINH")))
    2025                 :          0 :             eId=ocSinHyp;
    2026         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("TANH")))
    2027                 :          0 :             eId=ocTanHyp;
    2028         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("EVEN")))
    2029                 :          0 :             eId=ocIsEven;
    2030         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ODD")))
    2031                 :          0 :             eId=ocIsOdd;
    2032         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("ACOT")))
    2033                 :          0 :             eId=ocArcCot;
    2034         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COT")))
    2035                 :          0 :             eId=ocCot;
    2036         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("TRUNC")))
    2037                 :          0 :             eId=ocTrunc;
    2038         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("GEOMEAN")))
    2039                 :          0 :             eId=ocGeoMean;
    2040         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("HARMEAN")))
    2041                 :          0 :             eId=ocHarMean;
    2042         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CORREL")))
    2043                 :          0 :             eId=ocCorrel;
    2044         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("MEDIAN")))
    2045                 :          0 :             eId=ocMedian;
    2046         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("COV")))
    2047                 :          0 :             eId=ocCovar;
    2048         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("SKEWNESS")))
    2049                 :          0 :             eId=ocSchiefe;
    2050         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CHITEST")))
    2051                 :          0 :             eId=ocChiTest;
    2052         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("FTEST")))
    2053                 :          0 :             eId=ocFTest;
    2054         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("AVEDEV")))
    2055                 :          0 :             eId=ocAveDev;
    2056         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("PRODUCT")))
    2057                 :          0 :             eId=ocProduct;
    2058         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("PERMUT")))
    2059                 :          0 :             eId=ocVariationen;
    2060         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("GAMMALN")))
    2061                 :          0 :             eId=ocGammaLn;
    2062         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("POISSON")))
    2063                 :          0 :             eId=ocPoissonDist;
    2064         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("NORMAL")))
    2065                 :          0 :             eId=ocNormDist;
    2066         [ #  # ]:          0 :     else if (rTest.equalsL(RTL_CONSTASCII_STRINGPARAM("CRITBINOMIAL")))
    2067                 :          0 :             eId=ocKritBinom;
    2068                 :          0 :     return eId;
    2069                 :            : }
    2070                 :            : 
    2071                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10