absyntax_utils/absyntax_utils.cc
changeset 591 76bad7199896
parent 589 de4c2a058767
child 596 4efb11e44065
equal deleted inserted replaced
590:649667749171 591:76bad7199896
   124   integer_c *integer;
   124   integer_c *integer;
   125   neg_integer_c * neg_integer;
   125   neg_integer_c * neg_integer;
   126   char *endptr;
   126   char *endptr;
   127   int64_t ret;
   127   int64_t ret;
   128 
   128 
   129   if ((neg_integer = dynamic_cast<neg_integer_c *>(sym)) != NULL)
       
   130     return - extract_int64_value(neg_integer->exp, overflow);
       
   131 
       
   132   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   129   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   133 
       
   134   for(unsigned int i = 0; i < strlen(integer->value); i++)
   130   for(unsigned int i = 0; i < strlen(integer->value); i++)
   135     if (integer->value[i] != '_')  str += integer->value[i];
   131     if (integer->value[i] != '_')  str += integer->value[i];
   136 
   132 
   137   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   133   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   138   ret = matiec_strtoint64((int64_t *)NULL, str.c_str(), &endptr, 10);
   134   ret = matiec_strtoint64((int64_t *)NULL, str.c_str(), &endptr, 10);
   150   neg_integer_c * neg_integer;
   146   neg_integer_c * neg_integer;
   151   char *endptr;
   147   char *endptr;
   152   uint64_t ret;
   148   uint64_t ret;
   153   
   149   
   154   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   150   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   155 
       
   156   for(unsigned int i = 0; i < strlen(integer->value); i++)
   151   for(unsigned int i = 0; i < strlen(integer->value); i++)
   157     if (integer->value[i] != '_')  str += integer->value[i];
   152     if (integer->value[i] != '_')  str += integer->value[i];
   158 
   153 
   159   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   154   errno = 0; // since strtoXX() may legally return 0, we must set errno to 0 to detect errors correctly!
   160   ret = matiec_strtouint64((uint64_t *)NULL, str.c_str(), &endptr, 10);
   155   ret = matiec_strtouint64((uint64_t *)NULL, str.c_str(), &endptr, 10);