40#define NUMBER_TOSTRING_BUF_SIZE 64
41#define NUMBER_DTOA_SIZE 18
90 }
else if(
buf[0]==
'0' &&
buf[1]>=
'1' &&
buf[1]<=
'9') {
100 int dec_point,
size, buf_size, buf_pos;
115 buf_size = prec ? prec+1 : 2;
139 for(;buf_pos<buf_size-1 && dec_point; dec_point--)
144 for(; dec_point>0; dec_point--)
149 for(; dec_point<0 && prec; dec_point++, prec--)
151 for(; buf_pos<buf_size-1 && prec; prec--)
153 for(; prec; prec--) {
164 int dec_point,
size, buf_size, exp_size = 1;
180 for(; buf_size>1 &&
buf[buf_size-1]==
'0'; buf_size--)
184 while(dec_point>=
size || dec_point<=-
size) {
190 size = buf_size+2+exp_size;
192 size = buf_size+3+exp_size;
194 size = prec+4+exp_size;
211 for(; prec>buf_size-1; prec--)
219 dec_point = -dec_point;
223 str[--
size] =
'0'+dec_point%10;
252 if(radix < 2 || radix > 36)
286 INT beg =
buf[0]==
'-'?1:0;
310 idx = (
buf[0]==
'-') ? 1 : 0;
329 log_radix = -log_radix;
352 WCHAR buf[316], decimal[8], thousands[8], *numstr;
393 format->Grouping = (grouping[2] ==
'2' ? 32 : grouping[0] -
'0');
398 format->NegativeOrder = 1;
399 format->lpDecimalSep = decimal;
402 format->lpThousandSep = thousands;
464 if(prec < 0 || prec > 20)
504 if(prec < 0 || prec > 20)
544 if(prec<1 || prec>21)
633 case DISPATCH_CONSTRUCT: {
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
HRESULT create_builtin_constructor(script_ctx_t *ctx, builtin_invoke_t value_proc, const WCHAR *name, const builtin_info_t *builtin_info, DWORD flags, jsdisp_t *prototype, jsdisp_t **ret)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
_ACRTIMP void __cdecl _free_locale(_locale_t)
_ACRTIMP _locale_t __cdecl _create_locale(int, const char *)
_ACRTIMP double __cdecl fmod(double, double)
_ACRTIMP double __cdecl floor(double)
double pow(double x, double y)
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static HRESULT to_string(VARIANT *src, BSTR *dst)
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
ULONG jsdisp_release(jsdisp_t *obj)
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
jsdisp_t * to_jsdisp(IDispatch *disp)
#define JS_E_PRECISION_OUT_OF_RANGE
#define SCRIPTLANGUAGEVERSION_ES5
#define JS_E_NUMBER_EXPECTED
HRESULT to_number(script_ctx_t *, jsval_t, double *)
HRESULT to_int32(script_ctx_t *, jsval_t, INT *)
#define JS_E_FRACTION_DIGITS_OUT_OF_RANGE
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
const unsigned int PROPF_METHOD
const unsigned int PROPF_CONSTR
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
static void jsstr_release(jsstr_t *str)
static jsstr_t * jsstr_alloc(const WCHAR *str)
static BOOL is_number(jsval_t v)
static jsval_t jsval_string(jsstr_t *str)
static jsval_t jsval_obj(jsdisp_t *obj)
static BOOL is_undefined(jsval_t v)
static double get_number(jsval_t v)
static IDispatch * get_object(jsval_t v)
static BOOL is_object_instance(jsval_t v)
static jsval_t jsval_number(double n)
#define memmove(s1, s2, n)
static unsigned int number
static HRESULT Number_toString(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT Number_toFixed(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT localize_number(script_ctx_t *ctx, DOUBLE val, BOOL new_format, jsstr_t **ret)
static HRESULT Number_valueOf(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT create_number_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
static const builtin_info_t NumberInst_info
static HRESULT numberval_this(jsval_t vthis, DOUBLE *ret)
static HRESULT Number_toExponential(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static const builtin_info_t Number_info
static HRESULT NumberConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT create_number(script_ctx_t *ctx, double value, jsdisp_t **ret)
static HRESULT alloc_number(script_ctx_t *ctx, jsdisp_t *object_prototype, NumberInstance **ret)
static NumberInstance * number_from_jsdisp(jsdisp_t *jsdisp)
static HRESULT Number_toLocaleString(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
#define NUMBER_TOSTRING_BUF_SIZE
static jsstr_t * number_to_exponential(double val, int prec)
static HRESULT Number_toPrecision(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static jsstr_t * number_to_fixed(double val, int prec)
static void number_to_str(double d, WCHAR *buf, int size, int *dec_point)
static const builtin_prop_t Number_props[]
#define CONTAINING_RECORD(address, type, field)
#define LOCALE_INEGNUMBER
size_t const unsigned const radix