2014-10-07 00:38 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* include/hbdefs.h
    * use strict aliasing friendly conversions in MSC builds which support
      intrinsic version of _byteswap_*() functions.
      It should also pacify some of MSC warnings.

  * include/hbdefs.h
  * src/rdd/dbffpt/dbffpt1.c
    * minor formatting

  * contrib/gtwvg/wvgcore.c
    ! fixed HANDLE to LONG casting - it's bug in 64 bit builds
This commit is contained in:
Przemysław Czerpak
2014-10-07 00:38:13 +02:00
parent e2a9cabe96
commit 1a78d17f3b
4 changed files with 158 additions and 144 deletions

View File

@@ -10,6 +10,19 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2014-10-07 00:38 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbdefs.h
* use strict aliasing friendly conversions in MSC builds which support
intrinsic version of _byteswap_*() functions.
It should also pacify some of MSC warnings.
* include/hbdefs.h
* src/rdd/dbffpt/dbffpt1.c
* minor formatting
* contrib/gtwvg/wvgcore.c
! fixed HANDLE to LONG casting - it's bug in 64 bit builds
2014-10-06 22:35 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbcomp.h
* include/hbcompdf.h

View File

@@ -2756,7 +2756,7 @@ HB_FUNC( WVT_LOADPICTUREEX )
hb_strfree( hImage );
if( iPicture )
{
hb_retnl( ( HB_PTRDIFF ) iPicture );
hb_retnint( ( HB_PTRDIFF ) iPicture );
}
#endif
}
@@ -2796,7 +2796,7 @@ HB_FUNC( WVT_LOADPICTUREFROMRESOURCEEX )
hb_strfree( hSection );
if( iPicture )
{
hb_retnl( ( HB_PTRDIFF ) iPicture );
hb_retnint( ( HB_PTRDIFF ) iPicture );
}
#endif
}

View File

@@ -72,7 +72,10 @@
defined( HB_OS_BSD ) || defined( HB_OS_SUNOS ) || \
defined( HB_OS_BEOS ) || defined( HB_OS_QNX ) || \
defined( HB_OS_VXWORKS ) || defined( HB_OS_MINIX ) ) )
#include <stdint.h>
# include <stdint.h>
# if defined( _MSC_VER ) && _MSC_VER >= 1400
# include <intrin.h>
# endif
/* NOTE: Hack to avoid collision between stdint.h and unistd.h. [vszakats] */
# if defined( HB_OS_VXWORKS ) && defined( _INTPTR ) && ! defined( _INTPTR_T )
# define _INTPTR_T
@@ -806,13 +809,25 @@ typedef HB_U32 HB_FATTR;
#endif
/* Macros to store/retrieve integer and double values at/from byte address */
#if defined( __GNUC__ )
#if defined( __GNUC__ ) || ( defined( _MSC_VER ) && ( _MSC_VER >= 1400 ) )
# if ( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 3 ) ) && \
! defined( __ICC ) && ! defined( __OPENCC__ ) && ! defined( __PCC__ )
# define HB_BUILTIN_BSWAP 1
# define HB_BUILTIN_BSWAP32( n ) __builtin_bswap32( n )
# define HB_BUILTIN_BSWAP64( n ) __builtin_bswap64( n )
# elif defined( _MSC_VER )
# define HB_BUILTIN_BSWAP32( n ) _byteswap_ulong( n )
# define HB_BUILTIN_BSWAP64( n ) _byteswap_uint64( n )
# endif
# if defined( _MSC_VER )
# define _HB_CAST16 ( HB_U16 )
# define _HB_CAST32 ( HB_U32 )
# define _HB_CAST64 ( HB_U64 )
# else
# define HB_BUILTIN_BSWAP 0
# define _HB_CAST16
# define _HB_CAST32
# define _HB_CAST64
# endif
typedef union
@@ -849,40 +864,41 @@ typedef HB_U32 HB_FATTR;
{
double val;
HB_BYTE buf[ 8 ];
# if ! defined( HB_LONG_LONG_OFF ) || defined( HB_ARCH_64BIT )
# if ( ! defined( HB_LONG_LONG_OFF ) || defined( HB_ARCH_64BIT ) ) && \
defined( HB_BUILTIN_BSWAP64 )
HB_U64 i64;
# endif
} HB_DBLCAST, * PHB_DBLCAST;
static __inline__ void * _hb_get_ptr( const HB_BYTE * buf )
static HB_FORCEINLINE void * _hb_get_ptr( const HB_BYTE * buf )
{
HB_PTRCAST u;
memcpy( u.buf, buf, sizeof( void * ) );
return u.val;
}
static __inline__ void _hb_put_ptr( HB_BYTE * buf, void * val )
static HB_FORCEINLINE void _hb_put_ptr( HB_BYTE * buf, void * val )
{
HB_PTRCAST u;
u.val = val;
memcpy( buf, u.buf, sizeof( void * ) );
}
static __inline__ HB_U16 _hb_get_std_uint16( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U16 _hb_get_std_uint16( const HB_BYTE * buf )
{
HB_U16CAST u;
memcpy( u.buf, buf, sizeof( u.buf ) );
return u.val;
}
static __inline__ void _hb_put_std_uint16( HB_BYTE * buf, HB_U16 val )
static HB_FORCEINLINE void _hb_put_std_uint16( HB_BYTE * buf, HB_U16 val )
{
HB_U16CAST u;
u.val = val;
memcpy( buf, u.buf, sizeof( u.buf ) );
}
static __inline__ HB_U16 _hb_get_rev_uint16( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U16 _hb_get_rev_uint16( const HB_BYTE * buf )
{
HB_U16CAST u;
u.buf[ 0 ] = buf[ 1 ];
@@ -890,7 +906,7 @@ typedef HB_U32 HB_FATTR;
return u.val;
}
static __inline__ void _hb_put_rev_uint16( HB_BYTE * buf, HB_U16 val )
static HB_FORCEINLINE void _hb_put_rev_uint16( HB_BYTE * buf, HB_U16 val )
{
HB_U16CAST u;
u.val = val;
@@ -898,26 +914,26 @@ typedef HB_U32 HB_FATTR;
buf[ 1 ] = u.buf[ 0 ];
}
static __inline__ HB_U32 _hb_get_std_uint32( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U32 _hb_get_std_uint32( const HB_BYTE * buf )
{
HB_U32CAST u;
memcpy( u.buf, buf, sizeof( u.buf ) );
return u.val;
}
static __inline__ void _hb_put_std_uint32( HB_BYTE * buf, HB_U32 val )
static HB_FORCEINLINE void _hb_put_std_uint32( HB_BYTE * buf, HB_U32 val )
{
HB_U32CAST u;
u.val = val;
memcpy( buf, u.buf, sizeof( u.buf ) );
}
static __inline__ HB_U32 _hb_get_rev_uint32( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U32 _hb_get_rev_uint32( const HB_BYTE * buf )
{
HB_U32CAST u;
# if HB_BUILTIN_BSWAP
# if defined( HB_BUILTIN_BSWAP32 )
memcpy( u.buf, buf, sizeof( u.buf ) );
return __builtin_bswap32( u.val );
return HB_BUILTIN_BSWAP32( u.val );
# else
u.buf[ 0 ] = buf[ 3 ];
u.buf[ 1 ] = buf[ 2 ];
@@ -927,11 +943,11 @@ typedef HB_U32 HB_FATTR;
# endif
}
static __inline__ void _hb_put_rev_uint32( HB_BYTE * buf, HB_U32 val )
static HB_FORCEINLINE void _hb_put_rev_uint32( HB_BYTE * buf, HB_U32 val )
{
HB_U32CAST u;
# if HB_BUILTIN_BSWAP
u.val = __builtin_bswap32( val );
# if defined( HB_BUILTIN_BSWAP32 )
u.val = HB_BUILTIN_BSWAP32( val );
memcpy( buf, u.buf, sizeof( u.buf ) );
# else
u.val = val;
@@ -943,26 +959,26 @@ typedef HB_U32 HB_FATTR;
}
# if ! defined( HB_LONG_LONG_OFF ) || defined( HB_ARCH_64BIT )
static __inline__ HB_U64 _hb_get_std_uint64( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U64 _hb_get_std_uint64( const HB_BYTE * buf )
{
HB_U64CAST u;
memcpy( u.buf, buf, sizeof( u.buf ) );
return u.val;
}
static __inline__ void _hb_put_std_uint64( HB_BYTE * buf, HB_U64 val )
static HB_FORCEINLINE void _hb_put_std_uint64( HB_BYTE * buf, HB_U64 val )
{
HB_U64CAST u;
u.val = val;
memcpy( buf, u.buf, sizeof( u.buf ) );
}
static __inline__ HB_U64 _hb_get_rev_uint64( const HB_BYTE * buf )
static HB_FORCEINLINE HB_U64 _hb_get_rev_uint64( const HB_BYTE * buf )
{
HB_U64CAST u;
# if HB_BUILTIN_BSWAP
# if defined( HB_BUILTIN_BSWAP64 )
memcpy( u.buf, buf, sizeof( u.buf ) );
return __builtin_bswap64( u.val );
return HB_BUILTIN_BSWAP64( u.val );
# else
u.buf[ 0 ] = buf[ 7 ];
u.buf[ 1 ] = buf[ 6 ];
@@ -976,11 +992,11 @@ typedef HB_U32 HB_FATTR;
# endif
}
static __inline__ void _hb_put_rev_uint64( HB_BYTE * buf, HB_U64 val )
static HB_FORCEINLINE void _hb_put_rev_uint64( HB_BYTE * buf, HB_U64 val )
{
HB_U64CAST u;
# if HB_BUILTIN_BSWAP
u.val = __builtin_bswap64( val );
# if defined( HB_BUILTIN_BSWAP64 )
u.val = HB_BUILTIN_BSWAP64( val );
memcpy( buf, u.buf, sizeof( u.buf ) );
# else
u.val = val;
@@ -996,27 +1012,27 @@ typedef HB_U32 HB_FATTR;
}
# endif
static __inline__ double _hb_get_std_double( const HB_BYTE * buf )
static HB_FORCEINLINE double _hb_get_std_double( const HB_BYTE * buf )
{
HB_DBLCAST u;
memcpy( u.buf, buf, sizeof( u.buf ) );
return u.val;
}
static __inline__ void _hb_put_std_double( HB_BYTE * buf, double val )
static HB_FORCEINLINE void _hb_put_std_double( HB_BYTE * buf, double val )
{
HB_DBLCAST u;
u.val = val;
memcpy( buf, u.buf, sizeof( u.buf ) );
}
static __inline__ double _hb_get_rev_double( const HB_BYTE * buf )
static HB_FORCEINLINE double _hb_get_rev_double( const HB_BYTE * buf )
{
HB_DBLCAST u;
# if ( ! defined( HB_LONG_LONG_OFF ) || defined( HB_ARCH_64BIT ) ) && \
HB_BUILTIN_BSWAP
defined( HB_BUILTIN_BSWAP64 )
memcpy( u.buf, buf, sizeof( u.buf ) );
u.i64 = __builtin_bswap64( u.i64 );
u.i64 = HB_BUILTIN_BSWAP64( u.i64 );
return u.val;
# else
u.buf[ 0 ] = buf[ 7 ];
@@ -1031,13 +1047,13 @@ typedef HB_U32 HB_FATTR;
# endif
}
static __inline__ void _hb_put_rev_double( HB_BYTE * buf, double val )
static HB_FORCEINLINE void _hb_put_rev_double( HB_BYTE * buf, double val )
{
HB_DBLCAST u;
# if ( ! defined( HB_LONG_LONG_OFF ) || defined( HB_ARCH_64BIT ) ) && \
HB_BUILTIN_BSWAP
defined( HB_BUILTIN_BSWAP64 )
u.val = val;
u.i64 = __builtin_bswap64( u.i64 );
u.i64 = HB_BUILTIN_BSWAP64( u.i64 );
memcpy( buf, u.buf, sizeof( u.buf ) );
# else
u.val = val;
@@ -1060,38 +1076,38 @@ typedef HB_U32 HB_FATTR;
# if defined( HB_BIG_ENDIAN )
# define HB_GET_BE_UINT16( p ) _hb_get_std_uint16( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT16( p, w ) _hb_put_std_uint16( ( HB_BYTE * ) ( p ), w )
# define HB_PUT_BE_UINT16( p, w ) _hb_put_std_uint16( ( HB_BYTE * ) ( p ), _HB_CAST16 w )
# define HB_GET_BE_UINT32( p ) _hb_get_std_uint32( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT32( p, l ) _hb_put_std_uint32( ( HB_BYTE * ) ( p ), l )
# define HB_PUT_BE_UINT32( p, l ) _hb_put_std_uint32( ( HB_BYTE * ) ( p ), _HB_CAST32 l )
# define HB_GET_BE_UINT64( p ) _hb_get_std_uint64( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT64( p, q ) _hb_put_std_uint64( ( HB_BYTE * ) ( p ), q )
# define HB_PUT_BE_UINT64( p, q ) _hb_put_std_uint64( ( HB_BYTE * ) ( p ), _HB_CAST64 q )
# define HB_GET_LE_UINT16( p ) _hb_get_rev_uint16( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT16( p, w ) _hb_put_rev_uint16( ( HB_BYTE * ) ( p ), w )
# define HB_PUT_LE_UINT16( p, w ) _hb_put_rev_uint16( ( HB_BYTE * ) ( p ), _HB_CAST16 w )
# define HB_GET_LE_UINT32( p ) _hb_get_rev_uint32( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT32( p, l ) _hb_put_rev_uint32( ( HB_BYTE * ) ( p ), l )
# define HB_PUT_LE_UINT32( p, l ) _hb_put_rev_uint32( ( HB_BYTE * ) ( p ), _HB_CAST32 l )
# define HB_GET_LE_UINT64( p ) _hb_get_rev_uint64( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT64( p, q ) _hb_put_rev_uint64( ( HB_BYTE * ) ( p ), q )
# define HB_PUT_LE_UINT64( p, q ) _hb_put_rev_uint64( ( HB_BYTE * ) ( p ), _HB_CAST64 q )
# else /* HB_LITTLE_ENDIAN */
# define HB_GET_BE_UINT16( p ) _hb_get_rev_uint16( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT16( p, w ) _hb_put_rev_uint16( ( HB_BYTE * ) ( p ), w )
# define HB_PUT_BE_UINT16( p, w ) _hb_put_rev_uint16( ( HB_BYTE * ) ( p ), _HB_CAST16 w )
# define HB_GET_BE_UINT32( p ) _hb_get_rev_uint32( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT32( p, l ) _hb_put_rev_uint32( ( HB_BYTE * ) ( p ), l )
# define HB_PUT_BE_UINT32( p, l ) _hb_put_rev_uint32( ( HB_BYTE * ) ( p ), _HB_CAST32 l )
# define HB_GET_BE_UINT64( p ) _hb_get_rev_uint64( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_BE_UINT64( p, q ) _hb_put_rev_uint64( ( HB_BYTE * ) ( p ), q )
# define HB_PUT_BE_UINT64( p, q ) _hb_put_rev_uint64( ( HB_BYTE * ) ( p ), _HB_CAST64 q )
# define HB_GET_LE_UINT16( p ) _hb_get_std_uint16( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT16( p, w ) _hb_put_std_uint16( ( HB_BYTE * ) ( p ), w )
# define HB_PUT_LE_UINT16( p, w ) _hb_put_std_uint16( ( HB_BYTE * ) ( p ), _HB_CAST16 w )
# define HB_GET_LE_UINT32( p ) _hb_get_std_uint32( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT32( p, l ) _hb_put_std_uint32( ( HB_BYTE * ) ( p ), l )
# define HB_PUT_LE_UINT32( p, l ) _hb_put_std_uint32( ( HB_BYTE * ) ( p ), _HB_CAST32 l )
# define HB_GET_LE_UINT64( p ) _hb_get_std_uint64( ( const HB_BYTE * ) ( p ) )
# define HB_PUT_LE_UINT64( p, q ) _hb_put_std_uint64( ( HB_BYTE * ) ( p ), q )
# define HB_PUT_LE_UINT64( p, q ) _hb_put_std_uint64( ( HB_BYTE * ) ( p ), _HB_CAST64 q )
# endif
#else /* ! __GNUC__ */
#else /* ! __GNUC__ || _MSC_VER < 1400 */
# define HB_GET_STD_DOUBLE( p ) hb_get_std_double( ( const HB_BYTE * ) ( p ) )
# define HB_GET_REV_DOUBLE( p ) hb_get_rev_double( ( const HB_BYTE * ) ( p ) )
@@ -1140,42 +1156,42 @@ typedef HB_U32 HB_FATTR;
# else
#define HB_GET_LE_UINT16( p ) ( ( HB_U16 ) \
( ( ( HB_U16 ) (( const HB_BYTE * )( p ))[0] ) | \
( ( HB_U16 ) (( const HB_BYTE * )( p ))[1] << 8 ) ) )
( ( ( HB_U16 ) (( const HB_BYTE * )( p ))[ 0 ] ) | \
( ( HB_U16 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) ) )
#define HB_GET_LE_UINT32( p ) ( ( HB_U32 ) \
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[0] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[2] << 16 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[3] << 24 ) ) )
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 0 ] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 2 ] << 16 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 3 ] << 24 ) ) )
#define HB_GET_LE_UINT64( p ) ( ( HB_U64 ) \
( ( ( HB_U64 ) (( const HB_BYTE * )( p ))[0] ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[2] << 16 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[3] << 24 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[4] << 32 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[5] << 40 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[6] << 48 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[7] << 56 ) ) )
( ( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 0 ] ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 2 ] << 16 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 3 ] << 24 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 4 ] << 32 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 5 ] << 40 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 6 ] << 48 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 7 ] << 56 ) ) )
#define HB_PUT_LE_UINT16( p, w ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( w ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (w) >> 8 ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( w ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (w) >> 8 ); \
} while( 0 )
#define HB_PUT_LE_UINT32( p, l ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( l ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (l) >> 8 ); \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( (l) >> 16 ); \
(( HB_BYTE * )( p ))[3] = ( HB_BYTE )( (l) >> 24 ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( l ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (l) >> 8 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( (l) >> 16 ); \
(( HB_BYTE * )( p ))[ 3 ] = ( HB_BYTE )( (l) >> 24 ); \
} while( 0 )
#define HB_PUT_LE_UINT64( p, q ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( q ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (q) >> 8 ); \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( (q) >> 16 ); \
(( HB_BYTE * )( p ))[3] = ( HB_BYTE )( (q) >> 24 ); \
(( HB_BYTE * )( p ))[4] = ( HB_BYTE )( (q) >> 32 ); \
(( HB_BYTE * )( p ))[5] = ( HB_BYTE )( (q) >> 40 ); \
(( HB_BYTE * )( p ))[6] = ( HB_BYTE )( (q) >> 48 ); \
(( HB_BYTE * )( p ))[7] = ( HB_BYTE )( (q) >> 56 ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( q ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (q) >> 8 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( (q) >> 16 ); \
(( HB_BYTE * )( p ))[ 3 ] = ( HB_BYTE )( (q) >> 24 ); \
(( HB_BYTE * )( p ))[ 4 ] = ( HB_BYTE )( (q) >> 32 ); \
(( HB_BYTE * )( p ))[ 5 ] = ( HB_BYTE )( (q) >> 40 ); \
(( HB_BYTE * )( p ))[ 6 ] = ( HB_BYTE )( (q) >> 48 ); \
(( HB_BYTE * )( p ))[ 7 ] = ( HB_BYTE )( (q) >> 56 ); \
} while( 0 )
# endif
@@ -1191,42 +1207,42 @@ typedef HB_U32 HB_FATTR;
# else
#define HB_GET_BE_UINT16( p ) ( ( HB_U16 ) \
( ( ( HB_U16 ) (( const HB_BYTE * )( p ))[0] << 8 ) | \
( ( HB_U16 ) (( const HB_BYTE * )( p ))[1] ) ) )
( ( ( HB_U16 ) (( const HB_BYTE * )( p ))[ 0 ] << 8 ) | \
( ( HB_U16 ) (( const HB_BYTE * )( p ))[ 1 ] ) ) )
#define HB_GET_BE_UINT32( p ) ( ( HB_U32 ) \
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[0] << 24 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[1] << 16 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[2] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[3] ) ) )
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 0 ] << 24 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 1 ] << 16 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 2 ] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 3 ] ) ) )
#define HB_GET_BE_UINT64( p ) ( ( HB_U64 ) \
( ( ( HB_U64 ) (( const HB_BYTE * )( p ))[0] << 56 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[1] << 48 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[2] << 40 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[3] << 32 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[4] << 24 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[5] << 16 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[6] << 8 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[7] ) ) )
( ( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 0 ] << 56 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 1 ] << 48 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 2 ] << 40 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 3 ] << 32 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 4 ] << 24 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 5 ] << 16 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 6 ] << 8 ) | \
( ( HB_U64 ) (( const HB_BYTE * )( p ))[ 7 ] ) ) )
#define HB_PUT_BE_UINT16( p, w ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( (w) >> 8 ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( w ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( (w) >> 8 ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( w ); \
} while( 0 )
#define HB_PUT_BE_UINT32( p, l ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( (l) >> 24 ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (l) >> 16 ); \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( (l) >> 8 ); \
(( HB_BYTE * )( p ))[3] = ( HB_BYTE )( l ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( (l) >> 24 ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (l) >> 16 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( (l) >> 8 ); \
(( HB_BYTE * )( p ))[ 3 ] = ( HB_BYTE )( l ); \
} while( 0 )
#define HB_PUT_BE_UINT64( p, q ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( (q) >> 56 ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (q) >> 48 ); \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( (q) >> 40 ); \
(( HB_BYTE * )( p ))[3] = ( HB_BYTE )( (q) >> 32 ); \
(( HB_BYTE * )( p ))[4] = ( HB_BYTE )( (q) >> 24 ); \
(( HB_BYTE * )( p ))[5] = ( HB_BYTE )( (q) >> 16 ); \
(( HB_BYTE * )( p ))[6] = ( HB_BYTE )( (q) >> 8 ); \
(( HB_BYTE * )( p ))[7] = ( HB_BYTE )( q ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( (q) >> 56 ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (q) >> 48 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( (q) >> 40 ); \
(( HB_BYTE * )( p ))[ 3 ] = ( HB_BYTE )( (q) >> 32 ); \
(( HB_BYTE * )( p ))[ 4 ] = ( HB_BYTE )( (q) >> 24 ); \
(( HB_BYTE * )( p ))[ 5 ] = ( HB_BYTE )( (q) >> 16 ); \
(( HB_BYTE * )( p ))[ 6 ] = ( HB_BYTE )( (q) >> 8 ); \
(( HB_BYTE * )( p ))[ 7 ] = ( HB_BYTE )( q ); \
} while( 0 )
# endif
@@ -1366,32 +1382,32 @@ typedef HB_U32 HB_FATTR;
* so we always have to build them from HB_BYTEs and cannot use C casting
*/
#define HB_GET_LE_INT24( p ) ( ( HB_I32 ) \
( ( ( HB_I32 ) (( const HB_BYTE * )( p ))[0] ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[2] << 16 ) | \
( ( HB_I32 ) ((( const HB_BYTE * )( p ))[2] & 0x80 ? 0xFF : 0x00 ) << 24 ) ) )
( ( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 0 ] ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 2 ] << 16 ) | \
( ( HB_I32 ) ((( const HB_BYTE * )( p ))[ 2 ] & 0x80 ? 0xFF : 0x00 ) << 24 ) ) )
#define HB_GET_LE_UINT24( p ) ( ( HB_U32 ) \
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[0] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[2] << 16 ) ) )
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 0 ] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 2 ] << 16 ) ) )
#define HB_PUT_LE_UINT24( p, u ) do { \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( u ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (u) >> 8 ); \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( (u) >> 16 ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( u ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (u) >> 8 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( (u) >> 16 ); \
} while( 0 )
#define HB_GET_BE_INT24( p ) ( ( HB_I32 ) \
( ( ( HB_I32 ) (( const HB_BYTE * )( p ))[2] ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[0] << 16 ) | \
( ( HB_I32 ) ((( const HB_BYTE * )( p ))[0] & 0x80 ? 0xFF : 0x00 ) << 24 ) ) )
( ( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 2 ] ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_I32 ) (( const HB_BYTE * )( p ))[ 0 ] << 16 ) | \
( ( HB_I32 ) ((( const HB_BYTE * )( p ))[ 0 ] & 0x80 ? 0xFF : 0x00 ) << 24 ) ) )
#define HB_GET_BE_UINT24( p ) ( ( HB_U32 ) \
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[2] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[1] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[0] << 16 ) ) )
( ( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 2 ] ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 1 ] << 8 ) | \
( ( HB_U32 ) (( const HB_BYTE * )( p ))[ 0 ] << 16 ) ) )
#define HB_PUT_BE_UINT24( p, u ) do { \
(( HB_BYTE * )( p ))[2] = ( HB_BYTE )( u ); \
(( HB_BYTE * )( p ))[1] = ( HB_BYTE )( (u) >> 8 ); \
(( HB_BYTE * )( p ))[0] = ( HB_BYTE )( (u) >> 16 ); \
(( HB_BYTE * )( p ))[ 2 ] = ( HB_BYTE )( u ); \
(( HB_BYTE * )( p ))[ 1 ] = ( HB_BYTE )( (u) >> 8 ); \
(( HB_BYTE * )( p ))[ 0 ] = ( HB_BYTE )( (u) >> 16 ); \
} while( 0 )
@@ -1476,28 +1492,20 @@ typedef HB_U32 HB_FATTR;
input to a module definition file. See emxdev.doc
in the RSXNT doc/ directory for more information. */
#define HB_EXPORT_ATTR
#elif defined( __GNUC__ ) && defined( HB_OS_WIN )
#define HB_EXPORT_ATTR __attribute__ (( dllexport ))
#elif defined( __GNUC__ ) && defined( HB_OS_LINUX ) && __GNUC__ >= 3
#define HB_EXPORT_ATTR __attribute__ ((visibility ("default")))
#elif defined( __BORLANDC__ )
#define HB_EXPORT_ATTR __declspec( dllexport )
#elif defined( __WATCOMC__ )
#define HB_EXPORT_ATTR __declspec( dllexport )
#elif defined( ASANLM ) || defined( ASANT )
#define HB_EXPORT_ATTR
#elif defined( HB_OS_WIN )
#define HB_EXPORT_ATTR _declspec( dllexport )
#else
#define HB_EXPORT_ATTR
#endif
#if defined( HB_DYNLIB )
@@ -1515,25 +1523,18 @@ typedef HB_U32 HB_FATTR;
input to a module definition file. See emxdev.doc
in the RSXNT doc/ directory for more information. */
#define HB_IMPORT_ATTR
#elif defined( __GNUC__ ) && defined( HB_OS_WIN )
#define HB_IMPORT_ATTR __attribute__ (( dllimport ))
#elif defined( __BORLANDC__ )
#define HB_IMPORT_ATTR __declspec( dllimport )
#elif defined( __WATCOMC__ )
#define HB_IMPORT_ATTR __declspec( dllimport )
#elif defined( ASANLM ) || defined( ASANT )
#define HB_IMPORT_ATTR
#elif defined( HB_OS_WIN )
#define HB_IMPORT_ATTR _declspec( dllimport )
#else
#define HB_IMPORT_ATTR
#endif
#define HB_IMPORT HB_IMPORT_ATTR

View File

@@ -2848,10 +2848,10 @@ static HB_ERRCODE hb_fptGetMemo( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM pIt
hb_itemPutDL( pItem, ( long ) HB_GET_LE_UINT32( pBuffer ) );
break;
case FPTIT_FLEX_CHAR:
hb_itemPutNI( pItem, ( signed char ) pBuffer[0] );
hb_itemPutNI( pItem, ( signed char ) pBuffer[ 0 ] );
break;
case FPTIT_FLEX_UCHAR:
hb_itemPutNI( pItem, ( unsigned char ) pBuffer[0] );
hb_itemPutNI( pItem, ( unsigned char ) pBuffer[ 0 ] );
break;
case FPTIT_FLEX_SHORT:
hb_itemPutNI( pItem, ( short ) HB_GET_LE_UINT16( pBuffer ) );
@@ -4813,7 +4813,7 @@ static HB_ERRCODE hb_fptPack( FPTAREAP pArea )
{
HB_FOFFSET size = hb_fileSize( pArea->pMemoTmpFile );
HB_ULONG ulNextBlock;
HB_BYTE buffer[4];
HB_BYTE buffer[ 4 ];
ulNextBlock = ( HB_ULONG ) ( ( size + pArea->ulNewBlockSize - 1 ) /
pArea->ulNewBlockSize );