32 std::string src_lower=src;
34 src_lower.begin(), ::tolower);
36 const char *p=src_lower.c_str();
38 std::string str_whole_number,
46 if(src_lower.size()>=2 && src_lower[0]==
'0' && src_lower[1]==
'x')
54 while(*p!=
'.' && *p!=0 && *p!=
'p')
65 while(*p!=0 && *p!=
'p')
67 str_fraction_part+=*p;
80 while(*p!=0 && *p!=
'f' && *p!=
'l' &&
81 *p!=
'w' && *p!=
'q' && *p!=
'd')
87 std::string str_number=str_whole_number+
94 if(str_number.empty())
99 if(str_exponent.empty())
105 exponent-=str_fraction_part.size()*4;
110 while(*p!=
'.' && *p!=0 && *p!=
'e' &&
111 *p!=
'f' && *p!=
'l' &&
112 *p!=
'w' && *p!=
'q' && *p!=
'd' &&
115 str_whole_number+=*p;
124 while(*p!=0 && *p!=
'e' &&
125 *p!=
'f' && *p!=
'l' &&
126 *p!=
'w' && *p!=
'q' && *p!=
'd' &&
129 str_fraction_part+=*p;
142 while(*p!=0 && *p!=
'f' && *p!=
'l' &&
143 *p!=
'w' && *p!=
'q' && *p!=
'd' &&
150 std::string str_number=str_whole_number+
153 if(str_number.empty())
158 if(str_exponent.empty())
176 if(strcmp(p,
"f16")==0)
178 else if(strcmp(p,
"f32")==0)
180 else if(strcmp(p,
"f32x")==0)
182 else if(strcmp(p,
"f64")==0)
184 else if(strcmp(p,
"f64x")==0)
186 else if(strcmp(p,
"f128")==0)
188 else if(strcmp(p,
"f128x")==0)
198 else if(*p==
'i' || *p==
'j')