Ignore:
Timestamp:
Sep 18, 2000, 12:31:42 AM (25 years ago)
Author:
davidr
Message:

Updates from Wine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/oleaut32/variant.cpp

    r632 r4278  
    1 /* $Id: variant.cpp,v 1.2 1999-08-22 22:08:50 sandervl Exp $ */
     1/* $Id: variant.cpp,v 1.3 2000-09-17 22:31:42 davidr Exp $ */
    22/*
    33 * VARIANT
     
    233233                int leapYear = 0;
    234234               
    235                 /* Start at 1. This is the way DATE is defined.
    236                 * January 1, 1900 at Midnight is 1.00.
    237                 * January 1, 1900 at 6AM is 1.25.
    238                 * and so on.
    239                 */
     235               /* Start at 1. This is the way DATE is defined.
     236                * January 1, 1900 at Midnight is 1.00.
     237                * January 1, 1900 at 6AM is 1.25.
     238                * and so on.
     239                */
    240240                *pDateOut = 1;
    241241
     
    271271                        break;
    272272                case 3:
    273                         *pDateOut += ( 59 + leapYear );
     273                        *pDateOut += (59 + leapYear);
    274274                        break;
    275275                case 4:
    276                         *pDateOut += ( 90 + leapYear );
     276                        *pDateOut += (90 + leapYear);
    277277                        break;
    278278                case 5:
    279                         *pDateOut += ( 120 + leapYear );
     279                        *pDateOut += (120 + leapYear);
    280280                        break;
    281281                case 6:
    282                         *pDateOut += ( 151 + leapYear );
     282                        *pDateOut += (151 + leapYear);
    283283                        break;
    284284                case 7:
    285                         *pDateOut += ( 181 + leapYear );
     285                        *pDateOut += (181 + leapYear);
    286286                        break;
    287287                case 8:
    288                         *pDateOut += ( 212 + leapYear );
     288                        *pDateOut += (212 + leapYear);
    289289                        break;
    290290                case 9:
    291                         *pDateOut += ( 243 + leapYear );
     291                        *pDateOut += (243 + leapYear);
    292292                        break;
    293293                case 10:
    294                         *pDateOut += ( 273 + leapYear );
     294                        *pDateOut += (273 + leapYear);
    295295                        break;
    296296                case 11:
    297                         *pDateOut += ( 304 + leapYear );
     297                        *pDateOut += (304 + leapYear);
    298298                        break;
    299299                case 12:
    300                         *pDateOut += ( 334 + leapYear );
     300                        *pDateOut += (334 + leapYear);
    301301                        break;
    302302                }
     
    366366                         * add the value to the year field.
    367367                         */
    368                         yearsSince1900 = floor( wholePart / DAYS_IN_ONE_YEAR );
     368                        yearsSince1900 = floor( (wholePart / DAYS_IN_ONE_YEAR) + 0.001 );
    369369                        pTm->tm_year += yearsSince1900;
    370370                        /* determine if this is a leap year.
    371371                         */
    372372                        if( isleap( pTm->tm_year ) )
     373                        {
    373374                                leapYear = 1;
     375                                wholePart++;
     376                        }
     377
    374378                        /* find what day of that year does the "wholePart" corresponds to.
    375379                         * Note: nDay is in [1-366] format
     
    875879        vtFrom = ps->vt & VT_TYPEMASK;
    876880       
    877     /* Note: Since "long" and "int" values both have 4 bytes and are both signed integers
    878      * "int" will be treated as "long" in the following code.
    879      * The same goes for there unsigned versions.
    880          */
    881 
     881        /* Note: Since "long" and "int" values both have 4 bytes and are
     882         * both signed integers "int" will be treated as "long" in the
     883         * following code.
     884         * The same goes for their unsigned versions.
     885         */
     886
     887        /* Trivial Case: If the coercion is from two types that are
     888         * identical then we can blindly copy from one argument to another.*/
     889        if ((vt==vtFrom))
     890        {
     891           return VariantCopy(pd,ps);
     892        }
     893
     894        /* Cases requiring thought*/
    882895        switch( vt )
    883896        {
    884897
    885     case( VT_EMPTY ):
     898        case( VT_EMPTY ):
    886899        res = VariantClear( pd );
    887900        break;
    888     case( VT_NULL ):
     901        case( VT_NULL ):
    889902        res = VariantClear( pd );
    890903        if( res == S_OK )
     
    16931706            break;
    16941707          case( VT_DISPATCH ):
     1708            if(pvarg->u.pdispVal!=NULL)
     1709              ICOM_CALL(Release,pvarg->u.pdispVal);
    16951710            break;
    16961711          case( VT_VARIANT ):
     1712            VariantClear(pvarg->u.pvarVal);
    16971713            break;
    16981714          case( VT_UNKNOWN ):
     1715            if(pvarg->u.punkVal!=NULL)
     1716              ICOM_CALL(Release,pvarg->u.punkVal);
    16991717            break;
    17001718          case( VT_SAFEARRAY ):
     
    17701788              break;
    17711789            case( VT_DISPATCH ):
     1790              pvargDest->u.pdispVal = pvargSrc->u.pdispVal;
     1791              if (pvargDest->u.pdispVal!=NULL)
     1792                ICOM_CALL(AddRef,pvargDest->u.pdispVal);
    17721793              break;
    17731794            case( VT_VARIANT ):
     1795              VariantCopy(pvargDest->u.pvarVal,pvargSrc->u.pvarVal);
    17741796              break;
    17751797            case( VT_UNKNOWN ):
     1798              pvargDest->u.punkVal = pvargSrc->u.punkVal;
     1799              if (pvargDest->u.pdispVal!=NULL)
     1800                ICOM_CALL(AddRef,pvargDest->u.punkVal);
    17761801              break;
    17771802            case( VT_SAFEARRAY ):
     
    32463271                }
    32473272
    3248                 if( lcid & VAR_DATEVALUEONLY )
    3249                         strftime( pBuffer, BUFFER_MAX, "%x", &TM );
    3250                 else if( lcid & VAR_TIMEVALUEONLY )
    3251                         strftime( pBuffer, BUFFER_MAX, "%X", &TM );
     3273    if( dwFlags & VAR_DATEVALUEONLY )
     3274                        strftime( pBuffer, BUFFER_MAX, "%lx", &TM );
     3275    else if( dwFlags & VAR_TIMEVALUEONLY )
     3276                        strftime( pBuffer, BUFFER_MAX, "%lX", &TM );
    32523277                else
    3253         strftime( pBuffer, BUFFER_MAX, "%x %X", &TM );
     3278        strftime( pBuffer, BUFFER_MAX, "%lx %lX", &TM );
    32543279
    32553280                *pbstrOut = StringDupAtoBstr( pBuffer );
     
    34483473        if( ret == S_OK )
    34493474        {
    3450 //              if( strncasecmp( pNewString, "True", strlen( pNewString ) ) == 0 )
    3451                 if( stricmp( pNewString, "True" ) == 0 )
     3475                if( strncasecmp( pNewString, "True", strlen( pNewString ) ) == 0 )
    34523476                {
    34533477                        *pboolOut = VARIANT_TRUE;
    34543478                }
    3455 //              else if( strncasecmp( pNewString, "False", strlen( pNewString ) ) == 0 )
    3456                 if( stricmp( pNewString, "False" ) == 0 )
     3479                else if( strncasecmp( pNewString, "False", strlen( pNewString ) ) == 0 )
    34573480                {
    34583481                        *pboolOut = VARIANT_FALSE;
     
    42964319}
    42974320
     4321
Note: See TracChangeset for help on using the changeset viewer.