absyntax_utils/absyntax_utils.cc
changeset 571 97b85630e496
parent 568 5f79478142d7
child 576 8368ec909825
equal deleted inserted replaced
570:cb704eca7e37 571:97b85630e496
   127 
   127 
   128   if ((hex_integer = dynamic_cast<hex_integer_c *>(sym)) == NULL) ERROR;
   128   if ((hex_integer = dynamic_cast<hex_integer_c *>(sym)) == NULL) ERROR;
   129   for(unsigned int i = 3; i < strlen(hex_integer->value); i++)
   129   for(unsigned int i = 3; i < strlen(hex_integer->value); i++)
   130     if (hex_integer->value[i] != '_') str += hex_integer->value[i];
   130     if (hex_integer->value[i] != '_') str += hex_integer->value[i];
   131     
   131     
       
   132   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   132   ret = strtoull(str.c_str(), &endptr, 16);
   133   ret = strtoull(str.c_str(), &endptr, 16);
   133   if (errno != 0) ERROR;
   134   if (errno != 0) ERROR;
   134 
   135 
   135   return ret;
   136   return ret;
   136 }
   137 }
   146 
   147 
   147   if ((real_sym = dynamic_cast<real_c *>(sym)) == NULL) ERROR;
   148   if ((real_sym = dynamic_cast<real_c *>(sym)) == NULL) ERROR;
   148   for(unsigned int i = 3; i < strlen(real_sym->value); i++)
   149   for(unsigned int i = 3; i < strlen(real_sym->value); i++)
   149     if (real_sym->value[i] != '_') str += real_sym->value[i];
   150     if (real_sym->value[i] != '_') str += real_sym->value[i];
   150     
   151     
       
   152   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   151   #if    (real64_t  == float)
   153   #if    (real64_t  == float)
   152     ret = strtof(str.c_str(), NULL);
   154     ret = strtof(str.c_str(), NULL);
   153   #elif  (real64_t  == double)
   155   #elif  (real64_t  == double)
   154     ret = strtod(str.c_str(), NULL);
   156     ret = strtod(str.c_str(), NULL);
   155   #elif  (real64_t  == long_double)
   157   #elif  (real64_t  == long_double)