equal
deleted
inserted
replaced
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) |