MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / num2straux

Function num2straux

third-party/lua-5.5.0/src/lstrlib.c:1028–1057  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1026
1027
1028static int num2straux (char *buff, unsigned sz, lua_Number x) {
1029 /* if 'inf' or 'NaN', format it like '%g' */
1030 if (x != x || x == (lua_Number)HUGE_VAL || x == -(lua_Number)HUGE_VAL)
1031 return l_sprintf(buff, sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)x);
1032 else if (x == 0) { /* can be -0... */
1033 /* create "0" or "-0" followed by exponent */
1034 return l_sprintf(buff, sz, LUA_NUMBER_FMT "x0p+0", (LUAI_UACNUMBER)x);
1035 }
1036 else {
1037 int e;
1038 lua_Number m = l_mathop(frexp)(x, &e); /* 'x' fraction and exponent */
1039 unsigned n = 0; /* character count */
1040 if (m < 0) { /* is number negative? */
1041 buff[n++] = '-'; /* add sign */
1042 m = -m; /* make it positive */
1043 }
1044 buff[n++] = '0'; buff[n++] = 'x'; /* add "0x" */
1045 m = adddigit(buff, n++, m * (1 << L_NBFD)); /* add first digit */
1046 e -= L_NBFD; /* this digit goes before the radix point */
1047 if (m > 0) { /* more digits? */
1048 buff[n++] = lua_getlocaledecpoint(); /* add radix point */
1049 do { /* add as many digits as needed */
1050 m = adddigit(buff, n++, m * 16);
1051 } while (m > 0);
1052 }
1053 n += cast_uint(l_sprintf(buff + n, sz - n, "p%+d", e)); /* add exponent */
1054 lua_assert(n < sz);
1055 return cast_int(n);
1056 }
1057}
1058
1059
1060static int lua_number2strx (lua_State *L, char *buff, unsigned sz,

Callers 1

lua_number2strxFunction · 0.70

Calls 1

adddigitFunction · 0.70

Tested by

no test coverage detected