diff options
Diffstat (limited to 'src/H5detect.c')
-rw-r--r-- | src/H5detect.c | 137 |
1 files changed, 100 insertions, 37 deletions
diff --git a/src/H5detect.c b/src/H5detect.c index 35cca1a..e29157d 100644 --- a/src/H5detect.c +++ b/src/H5detect.c @@ -202,34 +202,36 @@ precision (detected_t *d) int _i, _j; \ unsigned char *_x; \ \ - memset (&INFO, 0, sizeof(INFO)); \ + HDmemset(&INFO, 0, sizeof(INFO)); \ INFO.varname = #VAR; \ INFO.size = sizeof(TYPE); \ \ - if(sizeof(TYPE)!=1) { \ - for (_i=sizeof(TYPE),_v=0; _i>0; --_i) _v = (_v<<8) + _i; \ - for (_i=0,_x=(unsigned char *)&_v; _i<(signed)sizeof(TYPE); _i++) { \ - _j = (*_x++)-1; \ - assert (_j<(signed)sizeof(TYPE)); \ + if(sizeof(TYPE) != 1) { \ + for(_i = sizeof(TYPE), _v = 0; _i > 0; --_i) \ + _v = (_v << 8) + _i; \ + for(_i = 0, _x = (unsigned char *)&_v; _i < (signed)sizeof(TYPE); _i++) { \ + _j = (*_x++) - 1; \ + assert(_j < (signed)sizeof(TYPE)); \ INFO.perm[_i] = _j; \ - } \ + } /* end for */ \ } else { /*Not able to detect order if type size is 1 byte. Use native int \ *instead. No effect on data, just make it look correct. */ \ - for (_i=sizeof(int),_int_v=0; _i>0; --_i) _int_v = (_int_v<<8) + _i; \ - for (_i=0,_x=(unsigned char *)&_int_v; _i<(signed)sizeof(int); _i++) { \ + for(_i = sizeof(int), _int_v = 0; _i > 0; --_i) \ + _int_v = (_int_v << 8) + _i; \ + for(_i = 0, _x = (unsigned char *)&_int_v; _i < (signed)sizeof(int); _i++) { \ _j = (*_x++)-1; \ - assert (_j<(signed)sizeof(int)); \ + assert(_j < (signed)sizeof(int)); \ INFO.perm[_i] = _j; \ - } \ - } \ + } /* end for */ \ + } /* end else */ \ \ - INFO.sign = ('U'!=*(#VAR)); \ + INFO.sign = ('U' != *(#VAR)); \ precision (&(INFO)); \ ALIGNMENT(TYPE, INFO); \ - if(!strcmp(INFO.varname, "SCHAR") || !strcmp(INFO.varname, "SHORT") || \ - !strcmp(INFO.varname, "INT") || !strcmp(INFO.varname, "LONG") || \ - !strcmp(INFO.varname, "LLONG")) { \ - COMP_ALIGNMENT(TYPE,INFO.comp_align); \ + if(!HDstrcmp(INFO.varname, "SCHAR") || !HDstrcmp(INFO.varname, "SHORT") || \ + !HDstrcmp(INFO.varname, "INT") || !HDstrcmp(INFO.varname, "LONG") || \ + !HDstrcmp(INFO.varname, "LLONG")) { \ + COMP_ALIGNMENT(TYPE, INFO.comp_align); \ } \ } @@ -358,16 +360,16 @@ precision (detected_t *d) #if defined(H5_HAVE_LONGJMP) && defined(H5_HAVE_SIGNAL) #define ALIGNMENT(TYPE,INFO) { \ - char *volatile _buf=NULL; \ - volatile TYPE _val=1; \ + char *volatile _buf = NULL; \ + volatile TYPE _val = 1; \ volatile TYPE _val2; \ - volatile size_t _ano=0; \ + volatile size_t _ano = 0; \ void (*_handler)(int) = signal(SIGBUS, sigbus_handler); \ void (*_handler2)(int) = signal(SIGSEGV, sigsegv_handler); \ \ - _buf = (char*)malloc(sizeof(TYPE)+align_g[NELMTS(align_g)-1]); \ - if (setjmp(jbuf_g)) _ano++; \ - if (_ano<NELMTS(align_g)) { \ + _buf = (char*)malloc(sizeof(TYPE) + align_g[NELMTS(align_g) - 1]); \ + if(setjmp(jbuf_g)) _ano++; \ + if(_ano < NELMTS(align_g)) { \ *((TYPE*)(_buf+align_g[_ano])) = _val; /*possible SIGBUS or SEGSEGV*/ \ _val2 = *((TYPE*)(_buf+align_g[_ano])); /*possible SIGBUS or SEGSEGV*/ \ /* Cray Check: This section helps detect alignment on Cray's */ \ @@ -522,27 +524,88 @@ print_results(int nd, detected_t *d, int na, malign_t *misc_align) /* Include files */ printf("\ +/****************/\n\ +/* Module Setup */\n\ +/****************/\n\ +\n\ #define H5T_PACKAGE /*suppress error about including H5Tpkg.h*/\n\ \n\ -#include \"H5private.h\"\n\ -#include \"H5Iprivate.h\"\n\ -#include \"H5Eprivate.h\"\n\ -#include \"H5FLprivate.h\"\n\ -#include \"H5Tpkg.h\"\n\ \n\ +/***********/\n\ +/* Headers */\n\ +/***********/\n\ +#include \"H5private.h\" /* Generic Functions */\n\ +#include \"H5Eprivate.h\" /* Error handling */\n\ +#include \"H5FLprivate.h\" /* Free Lists */\n\ +#include \"H5Iprivate.h\" /* IDs */\n\ +#include \"H5Tpkg.h\" /* Datatypes */\n\ +\n\ +\n\ +/****************/\n\ +/* Local Macros */\n\ +/****************/\n\ +\n\ +\n\ +/******************/\n\ +/* Local Typedefs */\n\ +/******************/\n\ +\n\ +\n\ +/********************/\n\ +/* Package Typedefs */\n\ +/********************/\n\ +\n\ +\n\ +/********************/\n\ +/* Local Prototypes */\n\ +/********************/\n\ +\n\ +\n\ +/********************/\n\ +/* Public Variables */\n\ +/********************/\n\ +\n\n\ +/*****************************/\n\ +/* Library Private Variables */\n\ +/*****************************/\n\ +\n\n\ +/*********************/\n\ +/* Package Variables */\n\ +/*********************/\n\ +\n\ +\n"); + printf("\n\ +/*******************/\n\ +/* Local Variables */\n\ +/*******************/\n\ \n"); /* The interface initialization function */ printf("\n\ +\n\ +/*-------------------------------------------------------------------------\n\ + * Function: H5TN_init_interface\n\ + *\n\ + * Purpose: Initialize pre-defined native datatypes from code generated\n\ + * during the library configuration by H5detect.\n\ + *\n\ + * Return: Success: non-negative\n\ + * Failure: negative\n\ + *\n\ + * Programmer: Robb Matzke\n\ + * Wednesday, December 16, 1998\n\ + *\n\ + *-------------------------------------------------------------------------\n\ + */\n\ herr_t\n\ H5TN_init_interface(void)\n\ {\n\ H5T_t *dt = NULL;\n\ herr_t ret_value = SUCCEED;\n\ \n\ - FUNC_ENTER_NOAPI(H5TN_init_interface, FAIL);\n"); + FUNC_ENTER_NOAPI(H5TN_init_interface, FAIL)\n"); - for (i = 0; i < nd; i++) { + for(i = 0; i < nd; i++) { /* The native endianess of this machine */ /* The INFO.perm now contains `-1' for bytes that aren't used and * are always zero. This happens on the Cray for `short' where @@ -568,7 +631,7 @@ H5TN_init_interface(void)\n\ /* The part common to fixed and floating types */ printf("\ if(NULL == (dt = H5T_alloc()))\n\ - HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,\"memory allocation failed\")\n\ + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, \"datatype allocation failed\")\n\ dt->shared->state = H5T_STATE_IMMUTABLE;\n\ dt->shared->type = H5T_%s;\n\ dt->shared->size = %d;\n", @@ -621,8 +684,8 @@ H5TN_init_interface(void)\n\ /* Atomize the type */ printf("\ - if ((H5T_NATIVE_%s_g = H5I_register (H5I_DATATYPE, dt, FALSE))<0)\n\ - HGOTO_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL,\"can't initialize type system (atom registration failure\");\n", + if((H5T_NATIVE_%s_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)\n\ + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, \"can't register ID for built-in datatype\")\n", d[i].varname); printf(" H5T_NATIVE_%s_ALIGN_g = %lu;\n", d[i].varname, (unsigned long)(d[i].align)); @@ -656,16 +719,16 @@ H5TN_init_interface(void)\n\ printf("\ \n\ done:\n\ - if(ret_value<0) {\n\ + if(ret_value < 0) {\n\ if(dt != NULL) {\n\ if(dt->shared != NULL)\n\ H5FL_FREE(H5T_shared_t, dt->shared);\n\ H5FL_FREE(H5T_t, dt);\n\ } /* end if */\n\ - }\n\ + } /* end if */\n\ \n\ - FUNC_LEAVE_NOAPI(ret_value);\n}\n"); -} + FUNC_LEAVE_NOAPI(ret_value);\n} /* end H5TN_init_interface() */\n"); +} /* end print_results() */ /*------------------------------------------------------------------------- |