Changeset 4278 for trunk/src/oleaut32/variant.cpp
- Timestamp:
- Sep 18, 2000, 12:31:42 AM (25 years ago)
- 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 sandervlExp $ */1 /* $Id: variant.cpp,v 1.3 2000-09-17 22:31:42 davidr Exp $ */ 2 2 /* 3 3 * VARIANT … … 233 233 int leapYear = 0; 234 234 235 236 237 238 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 */ 240 240 *pDateOut = 1; 241 241 … … 271 271 break; 272 272 case 3: 273 *pDateOut += ( 59 + leapYear);273 *pDateOut += (59 + leapYear); 274 274 break; 275 275 case 4: 276 *pDateOut += ( 90 + leapYear);276 *pDateOut += (90 + leapYear); 277 277 break; 278 278 case 5: 279 *pDateOut += ( 120 + leapYear);279 *pDateOut += (120 + leapYear); 280 280 break; 281 281 case 6: 282 *pDateOut += ( 151 + leapYear);282 *pDateOut += (151 + leapYear); 283 283 break; 284 284 case 7: 285 *pDateOut += ( 181 + leapYear);285 *pDateOut += (181 + leapYear); 286 286 break; 287 287 case 8: 288 *pDateOut += ( 212 + leapYear);288 *pDateOut += (212 + leapYear); 289 289 break; 290 290 case 9: 291 *pDateOut += ( 243 + leapYear);291 *pDateOut += (243 + leapYear); 292 292 break; 293 293 case 10: 294 *pDateOut += ( 273 + leapYear);294 *pDateOut += (273 + leapYear); 295 295 break; 296 296 case 11: 297 *pDateOut += ( 304 + leapYear);297 *pDateOut += (304 + leapYear); 298 298 break; 299 299 case 12: 300 *pDateOut += ( 334 + leapYear);300 *pDateOut += (334 + leapYear); 301 301 break; 302 302 } … … 366 366 * add the value to the year field. 367 367 */ 368 yearsSince1900 = floor( wholePart / DAYS_IN_ONE_YEAR);368 yearsSince1900 = floor( (wholePart / DAYS_IN_ONE_YEAR) + 0.001 ); 369 369 pTm->tm_year += yearsSince1900; 370 370 /* determine if this is a leap year. 371 371 */ 372 372 if( isleap( pTm->tm_year ) ) 373 { 373 374 leapYear = 1; 375 wholePart++; 376 } 377 374 378 /* find what day of that year does the "wholePart" corresponds to. 375 379 * Note: nDay is in [1-366] format … … 875 879 vtFrom = ps->vt & VT_TYPEMASK; 876 880 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*/ 882 895 switch( vt ) 883 896 { 884 897 885 898 case( VT_EMPTY ): 886 899 res = VariantClear( pd ); 887 900 break; 888 901 case( VT_NULL ): 889 902 res = VariantClear( pd ); 890 903 if( res == S_OK ) … … 1693 1706 break; 1694 1707 case( VT_DISPATCH ): 1708 if(pvarg->u.pdispVal!=NULL) 1709 ICOM_CALL(Release,pvarg->u.pdispVal); 1695 1710 break; 1696 1711 case( VT_VARIANT ): 1712 VariantClear(pvarg->u.pvarVal); 1697 1713 break; 1698 1714 case( VT_UNKNOWN ): 1715 if(pvarg->u.punkVal!=NULL) 1716 ICOM_CALL(Release,pvarg->u.punkVal); 1699 1717 break; 1700 1718 case( VT_SAFEARRAY ): … … 1770 1788 break; 1771 1789 case( VT_DISPATCH ): 1790 pvargDest->u.pdispVal = pvargSrc->u.pdispVal; 1791 if (pvargDest->u.pdispVal!=NULL) 1792 ICOM_CALL(AddRef,pvargDest->u.pdispVal); 1772 1793 break; 1773 1794 case( VT_VARIANT ): 1795 VariantCopy(pvargDest->u.pvarVal,pvargSrc->u.pvarVal); 1774 1796 break; 1775 1797 case( VT_UNKNOWN ): 1798 pvargDest->u.punkVal = pvargSrc->u.punkVal; 1799 if (pvargDest->u.pdispVal!=NULL) 1800 ICOM_CALL(AddRef,pvargDest->u.punkVal); 1776 1801 break; 1777 1802 case( VT_SAFEARRAY ): … … 3246 3271 } 3247 3272 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 ); 3252 3277 else 3253 strftime( pBuffer, BUFFER_MAX, "% x %X", &TM );3278 strftime( pBuffer, BUFFER_MAX, "%lx %lX", &TM ); 3254 3279 3255 3280 *pbstrOut = StringDupAtoBstr( pBuffer ); … … 3448 3473 if( ret == S_OK ) 3449 3474 { 3450 // if( strncasecmp( pNewString, "True", strlen( pNewString ) ) == 0 ) 3451 if( stricmp( pNewString, "True" ) == 0 ) 3475 if( strncasecmp( pNewString, "True", strlen( pNewString ) ) == 0 ) 3452 3476 { 3453 3477 *pboolOut = VARIANT_TRUE; 3454 3478 } 3455 // else if( strncasecmp( pNewString, "False", strlen( pNewString ) ) == 0 ) 3456 if( stricmp( pNewString, "False" ) == 0 ) 3479 else if( strncasecmp( pNewString, "False", strlen( pNewString ) ) == 0 ) 3457 3480 { 3458 3481 *pboolOut = VARIANT_FALSE; … … 4296 4319 } 4297 4320 4321
Note:
See TracChangeset
for help on using the changeset viewer.