/* * $Id$ */ #include "hbdefs.h" int main() { char buf[16]; int n, i, l, f, iRet = 0; printf("\nStandard C types:\n"); printf("\t sizeof(void*)=%d\n", (int) sizeof(void*)); printf("\t sizeof(char)=%d\n", (int) sizeof(char) ); printf("\t sizeof(short int)=%d\n", (int) sizeof(short int) ); printf("\t sizeof(int)=%d\n", (int) sizeof(int) ); printf("\t sizeof(long int)=%d\n", (int) sizeof(long int) ); printf("\tsizeof(long long int)=%d\n", (int) sizeof(long long int) ); printf("\t sizeof(float)=%d\n", (int) sizeof(float)); printf("\t sizeof(double)=%d\n", (int) sizeof(double)); printf("\t sizeof(long double)=%d\n", (int) sizeof(long double)); printf("\nHarbour types:\n"); printf("\t sizeof(BYTE)=%d %s\n", (int) sizeof(BYTE ), sizeof(BYTE )==1 ? "OK" : "BAD" ); printf("\t sizeof(SHORT)=%d %s\n", (int) sizeof(SHORT ), sizeof(SHORT )==2 ? "OK" : "BAD" ); printf("\t sizeof(UINT)=%d %s\n", (int) sizeof(UINT ), sizeof(UINT)==4 || sizeof(UINT)==8 ? "OK" : "BAD" ); printf("\t sizeof(LONG)=%d %s\n", (int) sizeof(LONG ), sizeof(LONG)==4 || sizeof(LONG)==8 ? "OK" : "BAD" ); printf("\tsizeof(LONGLONG)=%d %s\n", (int) sizeof(LONGLONG), sizeof(LONGLONG)==8 ? "OK" : "BAD" ); printf("\t sizeof(double)=%d %s\n", (int) sizeof(double ), sizeof(double )==8 ? "OK" : "BAD" ); if ( sizeof(BYTE)!=1 || sizeof(SHORT)!=2 || (sizeof(LONG)!=4 && sizeof(LONG)!=8) || (sizeof(LONGLONG)!=4 && sizeof(LONGLONG)!=8) || sizeof(double)!=8 ) { iRet = 1; } n = 0x31323334; memcpy( buf, &n, sizeof( n ) ); buf[sizeof( n )] = '\0'; i = atoi( buf ); #if defined(HB_PDP_ENDIAN) l = 2143; #elif defined(HB_BIG_ENDIAN) l = 1234; #else l = 4321; #endif printf( "\nn=0x%x -> \"%s\" (%s endian) %s\n", n, buf, i == 1234 ? "big" : i == 2143 ? "pdp" : i == 4321 ? "little" : "unknown", i == l ? "OK" : "BAD" ); if( i != l ) { iRet = 1; } buf[0] = 0x12; buf[1] = 0x34; buf[2] = 0x56; buf[3] = 0x78; buf[4] = 0x65; i = ( HB_GET_BE_UINT32( buf ) == 0x12345678L && HB_GET_LE_UINT32( buf ) == 0x78563412L ); if ( ! i ) { iRet = 1; } printf( "byte order translation: %s\n", i ? "OK" : "BAD" ); for ( l = 0; l < 4; l++ ) { n = HB_GET_BE_UINT16( &buf[l] ); f = n == (buf[l] * 256 + buf[l+1]) ? 1 : 0; if ( ! f ) { iRet = 1; } printf( "HB_GET_BE_UINT16(%x,%x) = %x -> %s\n", buf[l], buf[l+1], n, f ? "OK" : "BAD" ); n = HB_GET_LE_UINT16( &buf[l] ); f = n == (buf[l] + 256 * buf[l+1]) ? 1 : 0; if ( ! f ) { iRet = 1; } printf( "HB_GET_LE_UINT16(%x,%x) = %x -> %s\n", buf[l], buf[l+1], n, f ? "OK" : "BAD" ); } n = (char)255; printf( "n=%d -> (char) type is %ssinged %s\n", n, n < 0 ? "" : "un", n < 0 ? "OK" : "BAD" ); if ( n >= 0 ) { iRet = 1; } if ( iRet ) { printf("\nHarbour cannot be compiled !!!\n"); } else { printf("\nBasic test is correct, try to compile Harbour.\n"); } return iRet; }