ReactOS  0.4.14-dev-52-g6116262
global.c File Reference
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <limits.h>
#include "jscript.h"
#include "engine.h"
#include "wine/debug.h"
Include dependency graph for global.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (jscript)
 
static BOOL is_uri_reserved (WCHAR c)
 
static BOOL is_uri_unescaped (WCHAR c)
 
static BOOL is_ecma_nonblank (const WCHAR c)
 
static WCHAR int_to_char (int i)
 
static HRESULT JSGlobal_escape (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
HRESULT JSGlobal_eval (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_isNaN (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_isFinite (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static INT char_to_int (WCHAR c)
 
static HRESULT JSGlobal_parseInt (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_parseFloat (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static int hex_to_int (const WCHAR wch)
 
static HRESULT JSGlobal_unescape (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_GetObject (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_ScriptEngine (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_ScriptEngineMajorVersion (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_ScriptEngineMinorVersion (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_ScriptEngineBuildVersion (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_CollectGarbage (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_encodeURI (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_decodeURI (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_encodeURIComponent (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT JSGlobal_decodeURIComponent (script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT init_constructors (script_ctx_t *ctx, jsdisp_t *object_prototype)
 
HRESULT init_global (script_ctx_t *ctx)
 

Variables

static const WCHAR NaNW [] = {'N','a','N',0}
 
static const WCHAR InfinityW [] = {'I','n','f','i','n','i','t','y',0}
 
static const WCHAR ArrayW [] = {'A','r','r','a','y',0}
 
static const WCHAR BooleanW [] = {'B','o','o','l','e','a','n',0}
 
static const WCHAR DateW [] = {'D','a','t','e',0}
 
static const WCHAR ErrorW [] = {'E','r','r','o','r',0}
 
static const WCHAR EvalErrorW [] = {'E','v','a','l','E','r','r','o','r',0}
 
static const WCHAR RangeErrorW [] = {'R','a','n','g','e','E','r','r','o','r',0}
 
static const WCHAR ReferenceErrorW [] = {'R','e','f','e','r','e','n','c','e','E','r','r','o','r',0}
 
static const WCHAR SyntaxErrorW [] = {'S','y','n','t','a','x','E','r','r','o','r',0}
 
static const WCHAR TypeErrorW [] = {'T','y','p','e','E','r','r','o','r',0}
 
static const WCHAR URIErrorW [] = {'U','R','I','E','r','r','o','r',0}
 
static const WCHAR FunctionW [] = {'F','u','n','c','t','i','o','n',0}
 
static const WCHAR NumberW [] = {'N','u','m','b','e','r',0}
 
static const WCHAR ObjectW [] = {'O','b','j','e','c','t',0}
 
static const WCHAR StringW [] = {'S','t','r','i','n','g',0}
 
static const WCHAR RegExpW [] = {'R','e','g','E','x','p',0}
 
static const WCHAR RegExpErrorW [] = {'R','e','g','E','x','p','E','r','r','o','r',0}
 
static const WCHAR ActiveXObjectW [] = {'A','c','t','i','v','e','X','O','b','j','e','c','t',0}
 
static const WCHAR VBArrayW [] = {'V','B','A','r','r','a','y',0}
 
static const WCHAR EnumeratorW [] = {'E','n','u','m','e','r','a','t','o','r',0}
 
static const WCHAR escapeW [] = {'e','s','c','a','p','e',0}
 
static const WCHAR evalW [] = {'e','v','a','l',0}
 
static const WCHAR isNaNW [] = {'i','s','N','a','N',0}
 
static const WCHAR isFiniteW [] = {'i','s','F','i','n','i','t','e',0}
 
static const WCHAR parseIntW [] = {'p','a','r','s','e','I','n','t',0}
 
static const WCHAR parseFloatW [] = {'p','a','r','s','e','F','l','o','a','t',0}
 
static const WCHAR unescapeW [] = {'u','n','e','s','c','a','p','e',0}
 
static const WCHAR _GetObjectW [] = {'G','e','t','O','b','j','e','c','t',0}
 
static const WCHAR ScriptEngineW [] = {'S','c','r','i','p','t','E','n','g','i','n','e',0}
 
static const WCHAR ScriptEngineMajorVersionW []
 
static const WCHAR ScriptEngineMinorVersionW []
 
static const WCHAR ScriptEngineBuildVersionW []
 
static const WCHAR CollectGarbageW [] = {'C','o','l','l','e','c','t','G','a','r','b','a','g','e',0}
 
static const WCHAR MathW [] = {'M','a','t','h',0}
 
static const WCHAR JSONW [] = {'J','S','O','N',0}
 
static const WCHAR encodeURIW [] = {'e','n','c','o','d','e','U','R','I',0}
 
static const WCHAR decodeURIW [] = {'d','e','c','o','d','e','U','R','I',0}
 
static const WCHAR encodeURIComponentW [] = {'e','n','c','o','d','e','U','R','I','C','o','m','p','o','n','e','n','t',0}
 
static const WCHAR decodeURIComponentW [] = {'d','e','c','o','d','e','U','R','I','C','o','m','p','o','n','e','n','t',0}
 
static const WCHAR undefinedW [] = {'u','n','d','e','f','i','n','e','d',0}
 
static int uri_char_table []
 
static const builtin_prop_t JSGlobal_props []
 
static const builtin_info_t JSGlobal_info
 

Function Documentation

◆ char_to_int()

static INT char_to_int ( WCHAR  c)
static

Definition at line 276 of file global.c.

277 {
278  if('0' <= c && c <= '9')
279  return c - '0';
280  if('a' <= c && c <= 'z')
281  return c - 'a' + 10;
282  if('A' <= c && c <= 'Z')
283  return c - 'A' + 10;
284  return 100;
285 }
const GLubyte * c
Definition: glext.h:8905

Referenced by JSGlobal_parseInt().

◆ hex_to_int()

static int hex_to_int ( const WCHAR  wch)
inlinestatic

Definition at line 467 of file global.c.

467  {
468  if(toupperW(wch)>='A' && toupperW(wch)<='F') return toupperW(wch)-'A'+10;
469  if(isdigitW(wch)) return wch-'0';
470  return -1;
471 }
WINE_UNICODE_INLINE WCHAR toupperW(WCHAR ch)
Definition: unicode.h:141
WINE_UNICODE_INLINE int isdigitW(WCHAR wc)
Definition: unicode.h:170

Referenced by JSGlobal_decodeURI(), JSGlobal_decodeURIComponent(), and JSGlobal_unescape().

◆ init_constructors()

static HRESULT init_constructors ( script_ctx_t ctx,
jsdisp_t object_prototype 
)
static

Definition at line 965 of file global.c.

966 {
967  HRESULT hres;
968 
969  hres = init_function_constr(ctx, object_prototype);
970  if(FAILED(hres))
971  return hres;
972 
974  jsval_obj(ctx->function_constr));
975  if(FAILED(hres))
976  return hres;
977 
978  hres = create_object_constr(ctx, object_prototype, &ctx->object_constr);
979  if(FAILED(hres))
980  return hres;
981 
983  jsval_obj(ctx->object_constr));
984  if(FAILED(hres))
985  return hres;
986 
987  hres = create_array_constr(ctx, object_prototype, &ctx->array_constr);
988  if(FAILED(hres))
989  return hres;
990 
992  jsval_obj(ctx->array_constr));
993  if(FAILED(hres))
994  return hres;
995 
996  hres = create_bool_constr(ctx, object_prototype, &ctx->bool_constr);
997  if(FAILED(hres))
998  return hres;
999 
1001  jsval_obj(ctx->bool_constr));
1002  if(FAILED(hres))
1003  return hres;
1004 
1005  hres = create_date_constr(ctx, object_prototype, &ctx->date_constr);
1006  if(FAILED(hres))
1007  return hres;
1008 
1010  jsval_obj(ctx->date_constr));
1011  if(FAILED(hres))
1012  return hres;
1013 
1014  hres = create_enumerator_constr(ctx, object_prototype, &ctx->enumerator_constr);
1015  if(FAILED(hres))
1016  return hres;
1017 
1020  if(FAILED(hres))
1021  return hres;
1022 
1023  hres = init_error_constr(ctx, object_prototype);
1024  if(FAILED(hres))
1025  return hres;
1026 
1028  jsval_obj(ctx->error_constr));
1029  if(FAILED(hres))
1030  return hres;
1031 
1034  if(FAILED(hres))
1035  return hres;
1036 
1039  if(FAILED(hres))
1040  return hres;
1041 
1044  if(FAILED(hres))
1045  return hres;
1046 
1049  if(FAILED(hres))
1050  return hres;
1051 
1054  if(FAILED(hres))
1055  return hres;
1056 
1059  if(FAILED(hres))
1060  return hres;
1061 
1063  jsval_obj(ctx->uri_error_constr));
1064  if(FAILED(hres))
1065  return hres;
1066 
1067  hres = create_number_constr(ctx, object_prototype, &ctx->number_constr);
1068  if(FAILED(hres))
1069  return hres;
1070 
1072  jsval_obj(ctx->number_constr));
1073  if(FAILED(hres))
1074  return hres;
1075 
1076  hres = create_regexp_constr(ctx, object_prototype, &ctx->regexp_constr);
1077  if(FAILED(hres))
1078  return hres;
1079 
1081  jsval_obj(ctx->regexp_constr));
1082  if(FAILED(hres))
1083  return hres;
1084 
1085  hres = create_string_constr(ctx, object_prototype, &ctx->string_constr);
1086  if(FAILED(hres))
1087  return hres;
1088 
1090  jsval_obj(ctx->string_constr));
1091  if(FAILED(hres))
1092  return hres;
1093 
1094  hres = create_vbarray_constr(ctx, object_prototype, &ctx->vbarray_constr);
1095  if(FAILED(hres))
1096  return hres;
1097 
1099  jsval_obj(ctx->vbarray_constr));
1100  if(FAILED(hres))
1101  return hres;
1102 
1103  return S_OK;
1104 }
#define PROPF_WRITABLE
Definition: jscript.h:98
jsdisp_t * bool_constr
Definition: jscript.h:440
static const WCHAR DateW[]
Definition: global.c:36
static const WCHAR NumberW[]
Definition: global.c:45
static const WCHAR RangeErrorW[]
Definition: global.c:39
jsdisp_t * vbarray_constr
Definition: jscript.h:455
HRESULT create_object_constr(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: object.c:584
jsdisp_t * reference_error_constr
Definition: jscript.h:446
static const WCHAR EvalErrorW[]
Definition: global.c:38
jsdisp_t * enumerator_constr
Definition: jscript.h:442
jsdisp_t * array_constr
Definition: jscript.h:439
jsdisp_t * type_error_constr
Definition: jscript.h:449
jsdisp_t * range_error_constr
Definition: jscript.h:445
static const WCHAR ObjectW[]
Definition: global.c:46
HRESULT jsdisp_define_data_property(jsdisp_t *obj, const WCHAR *name, unsigned flags, jsval_t value)
Definition: dispex.c:1794
HRESULT create_number_constr(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: number.c:613
jsdisp_t * string_constr
Definition: jscript.h:454
static const WCHAR BooleanW[]
Definition: global.c:35
HRESULT create_bool_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
Definition: bool.c:198
jsdisp_t * syntax_error_constr
Definition: jscript.h:448
jsdisp_t * error_constr
Definition: jscript.h:443
jsdisp_t * regexp_error_constr
Definition: jscript.h:447
static const WCHAR EnumeratorW[]
Definition: global.c:52
jsdisp_t * number_constr
Definition: jscript.h:451
HRESULT create_vbarray_constr(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: vbarray.c:330
HRESULT create_enumerator_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
Definition: enumerator.c:332
static const WCHAR ErrorW[]
Definition: global.c:37
jsdisp_t * regexp_constr
Definition: jscript.h:453
HRESULT init_error_constr(script_ctx_t *ctx, jsdisp_t *object_prototype)
Definition: error.c:326
static const WCHAR TypeErrorW[]
Definition: global.c:42
HRESULT hres
Definition: protocol.c:465
static const WCHAR SyntaxErrorW[]
Definition: global.c:41
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR ArrayW[]
Definition: global.c:34
static const WCHAR URIErrorW[]
Definition: global.c:43
jsdisp_t * object_constr
Definition: jscript.h:452
static const WCHAR ReferenceErrorW[]
Definition: global.c:40
static const WCHAR VBArrayW[]
Definition: global.c:51
static const WCHAR StringW[]
Definition: global.c:47
HRESULT create_regexp_constr(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: jsregexp.c:1004
HRESULT init_function_constr(script_ctx_t *ctx, jsdisp_t *object_prototype)
Definition: function.c:853
#define S_OK
Definition: intsafe.h:59
jsdisp_t * function_constr
Definition: jscript.h:438
HRESULT create_date_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
Definition: date.c:2531
static const WCHAR FunctionW[]
Definition: global.c:44
HRESULT create_string_constr(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: string.c:1750
jsdisp_t * date_constr
Definition: jscript.h:441
jsdisp_t * global
Definition: jscript.h:437
static jsval_t jsval_obj(jsdisp_t *obj)
Definition: jsval.h:125
HRESULT create_array_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
Definition: array.c:1293
jsdisp_t * eval_error_constr
Definition: jscript.h:444
static const WCHAR RegExpW[]
Definition: global.c:48
jsdisp_t * uri_error_constr
Definition: jscript.h:450
static const WCHAR RegExpErrorW[]
Definition: global.c:49

Referenced by init_global().

◆ init_global()

HRESULT init_global ( script_ctx_t ctx)

Definition at line 1106 of file global.c.

1107 {
1108  unsigned const_flags = ctx->version >= SCRIPTLANGUAGEVERSION_ES5 ? 0 : PROPF_WRITABLE;
1109  jsdisp_t *math, *object_prototype, *constr;
1110  HRESULT hres;
1111 
1112  if(ctx->global)
1113  return S_OK;
1114 
1115  hres = create_dispex(ctx, &JSGlobal_info, NULL, &ctx->global);
1116  if(FAILED(hres))
1117  return hres;
1118 
1119  hres = create_object_prototype(ctx, &object_prototype);
1120  if(FAILED(hres))
1121  return hres;
1122 
1123  hres = init_constructors(ctx, object_prototype);
1124  jsdisp_release(object_prototype);
1125  if(FAILED(hres))
1126  return hres;
1127 
1128  hres = create_math(ctx, &math);
1129  if(FAILED(hres))
1130  return hres;
1131 
1133  jsdisp_release(math);
1134  if(FAILED(hres))
1135  return hres;
1136 
1137  if(ctx->version >= 2) {
1138  jsdisp_t *json;
1139 
1140  hres = create_json(ctx, &json);
1141  if(FAILED(hres))
1142  return hres;
1143 
1145  jsdisp_release(json);
1146  if(FAILED(hres))
1147  return hres;
1148  }
1149 
1150  hres = create_activex_constr(ctx, &constr);
1151  if(FAILED(hres))
1152  return hres;
1153 
1155  jsval_obj(constr));
1156  jsdisp_release(constr);
1157  if(FAILED(hres))
1158  return hres;
1159 
1161  if(FAILED(hres))
1162  return hres;
1163 
1164  hres = jsdisp_define_data_property(ctx->global, NaNW, const_flags, jsval_number(NAN));
1165  if(FAILED(hres))
1166  return hres;
1167 
1169  return hres;
1170 }
#define PROPF_WRITABLE
Definition: jscript.h:98
HRESULT jsdisp_define_data_property(jsdisp_t *obj, const WCHAR *name, unsigned flags, jsval_t value)
Definition: dispex.c:1794
static const WCHAR undefinedW[]
Definition: global.c:76
HRESULT create_math(script_ctx_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: math.c:531
HRESULT create_json(script_ctx_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: json.c:845
smooth NULL
Definition: ftsmooth.c:416
DWORD version
Definition: jscript.h:416
HRESULT create_object_prototype(script_ctx_t *, jsdisp_t **) DECLSPEC_HIDDEN
Definition: object.c:592
static const WCHAR NaNW[]
Definition: global.c:32
static const builtin_info_t JSGlobal_info
Definition: global.c:956
HRESULT hres
Definition: protocol.c:465
static HRESULT init_constructors(script_ctx_t *ctx, jsdisp_t *object_prototype)
Definition: global.c:965
static const WCHAR ActiveXObjectW[]
Definition: global.c:50
LONG HRESULT
Definition: typedefs.h:77
#define NAN
Definition: misc.c:46
#define SCRIPTLANGUAGEVERSION_ES5
Definition: jscript.h:49
static jsval_t jsval_undefined(void)
Definition: jsval.h:137
#define S_OK
Definition: intsafe.h:59
static const WCHAR JSONW[]
Definition: global.c:70
HRESULT create_dispex(script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype, jsdisp_t **dispex)
Definition: dispex.c:978
static const WCHAR MathW[]
Definition: global.c:69
static void jsdisp_release(jsdisp_t *jsdisp)
Definition: jscript.h:265
static const WCHAR InfinityW[]
Definition: global.c:33
jsdisp_t * global
Definition: jscript.h:437
static jsval_t jsval_obj(jsdisp_t *obj)
Definition: jsval.h:125
HRESULT create_activex_constr(script_ctx_t *ctx, jsdisp_t **ret)
Definition: activex.c:190
#define INFINITY
Definition: misc.c:36
static jsval_t jsval_number(double n)
Definition: jsval.h:144

Referenced by set_ctx_site().

◆ int_to_char()

static WCHAR int_to_char ( int  i)
static

Definition at line 109 of file global.c.

110 {
111  if(i < 10)
112  return '0'+i;
113  return 'A'+i-10;
114 }
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
Definition: glfuncs.h:248

Referenced by JSGlobal_encodeURI(), JSGlobal_encodeURIComponent(), and JSGlobal_escape().

◆ is_ecma_nonblank()

static BOOL is_ecma_nonblank ( const WCHAR  c)
inlinestatic

Definition at line 103 of file global.c.

104 {
105  return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') ||
106  c == '@' || c == '*' || c == '_' || c == '+' || c == '-' || c == '.' || c == '/');
107 }
const GLubyte * c
Definition: glext.h:8905

Referenced by JSGlobal_escape().

◆ is_uri_reserved()

static BOOL is_uri_reserved ( WCHAR  c)
inlinestatic

Definition at line 92 of file global.c.

93 {
94  return c < 128 && uri_char_table[c] == 1;
95 }
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
static int uri_char_table[]
Definition: global.c:78

Referenced by JSGlobal_encodeURI().

◆ is_uri_unescaped()

static BOOL is_uri_unescaped ( WCHAR  c)
inlinestatic

Definition at line 97 of file global.c.

98 {
99  return c < 128 && uri_char_table[c] == 2;
100 }
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
static int uri_char_table[]
Definition: global.c:78

Referenced by JSGlobal_encodeURI(), and JSGlobal_encodeURIComponent().

◆ JSGlobal_CollectGarbage()

static HRESULT JSGlobal_CollectGarbage ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 600 of file global.c.

602 {
603  static int once = 0;
604  if (!once++)
605  FIXME(": stub\n");
606  return S_OK;
607 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ JSGlobal_decodeURI()

static HRESULT JSGlobal_decodeURI ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 674 of file global.c.

676 {
677  const WCHAR *ptr, *uri;
678  jsstr_t *str, *ret_str;
679  unsigned len = 0;
680  int i, val, res;
681  WCHAR *ret;
682  char buf[4];
683  WCHAR out;
684  HRESULT hres;
685 
686  TRACE("\n");
687 
688  if(!argc) {
689  if(r)
691  return S_OK;
692  }
693 
694  hres = to_flat_string(ctx, argv[0], &str, &uri);
695  if(FAILED(hres))
696  return hres;
697 
698  for(ptr = uri; *ptr; ptr++) {
699  if(*ptr != '%') {
700  len++;
701  }else {
702  res = 0;
703  for(i=0; i<4; i++) {
704  if(ptr[i*3]!='%' || hex_to_int(ptr[i*3+1])==-1 || (val=hex_to_int(ptr[i*3+2]))==-1)
705  break;
706  val += hex_to_int(ptr[i*3+1])<<4;
707  buf[i] = val;
708 
709  res = MultiByteToWideChar(CP_UTF8, 0, buf, i+1, &out, 1);
710  if(res)
711  break;
712  }
713 
714  if(!res) {
717  }
718 
719  ptr += i*3+2;
720  len++;
721  }
722  }
723 
724  ret_str = jsstr_alloc_buf(len, &ret);
725  if(!ret_str) {
727  return E_OUTOFMEMORY;
728  }
729 
730  for(ptr = uri; *ptr; ptr++) {
731  if(*ptr != '%') {
732  *ret++ = *ptr;
733  }else {
734  for(i=0; i<4; i++) {
735  if(ptr[i*3]!='%' || hex_to_int(ptr[i*3+1])==-1 || (val=hex_to_int(ptr[i*3+2]))==-1)
736  break;
737  val += hex_to_int(ptr[i*3+1])<<4;
738  buf[i] = val;
739 
740  res = MultiByteToWideChar(CP_UTF8, 0, buf, i+1, ret, 1);
741  if(res)
742  break;
743  }
744 
745  ptr += i*3+2;
746  ret++;
747  }
748  }
749 
750  TRACE("%s -> %s\n", debugstr_jsstr(str), debugstr_jsstr(ret_str));
752 
753  if(r)
754  *r = jsval_string(ret_str);
755  else
756  jsstr_release(ret_str);
757  return S_OK;
758 }
static int argc
Definition: ServiceArgs.c:12
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
const char * uri
Definition: sec_mgr.c:1594
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
HRESULT throw_uri_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:443
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
Definition: glfuncs.h:248
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define CP_UTF8
Definition: nls.h:20
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
GLuint GLfloat * val
Definition: glext.h:7180
#define TRACE(s)
Definition: solgame.cpp:4
const char * debugstr_jsstr(jsstr_t *str)
Definition: jsstr.c:37
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
static FILE * out
Definition: regtests2xml.c:44
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
#define JS_E_INVALID_URI_CODING
Definition: jscript.h:568
#define MultiByteToWideChar
Definition: compat.h:100
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
GLuint res
Definition: glext.h:9613
static int hex_to_int(const WCHAR wch)
Definition: global.c:467
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ JSGlobal_decodeURIComponent()

static HRESULT JSGlobal_decodeURIComponent ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 824 of file global.c.

826 {
827  const WCHAR *ptr, *uri;
828  jsstr_t *str, *ret;
829  WCHAR *out_ptr;
830  DWORD len = 0;
831  HRESULT hres;
832 
833  TRACE("\n");
834 
835  if(!argc) {
836  if(r)
838  return S_OK;
839  }
840 
841  hres = to_flat_string(ctx, argv[0], &str, &uri);
842  if(FAILED(hres))
843  return hres;
844 
845  ptr = uri;
846  while(*ptr) {
847  if(*ptr == '%') {
848  char octets[4];
849  unsigned char mask = 0x80;
850  int i, size, num_bytes = 0;
851  if(hex_to_int(*(ptr+1)) < 0 || hex_to_int(*(ptr+2)) < 0) {
852  FIXME("Throw URIError: Invalid hex sequence\n");
854  return E_FAIL;
855  }
856  octets[0] = (hex_to_int(*(ptr+1)) << 4) + hex_to_int(*(ptr+2));
857  ptr += 3;
858  while(octets[0] & mask) {
859  mask = mask >> 1;
860  ++num_bytes;
861  }
862  if(num_bytes == 1 || num_bytes > 4) {
863  FIXME("Throw URIError: Invalid initial UTF character\n");
865  return E_FAIL;
866  }
867  for(i = 1; i < num_bytes; ++i) {
868  if(*ptr != '%'){
869  FIXME("Throw URIError: Incomplete UTF sequence\n");
871  return E_FAIL;
872  }
873  if(hex_to_int(*(ptr+1)) < 0 || hex_to_int(*(ptr+2)) < 0) {
874  FIXME("Throw URIError: Invalid hex sequence\n");
876  return E_FAIL;
877  }
878  octets[i] = (hex_to_int(*(ptr+1)) << 4) + hex_to_int(*(ptr+2));
879  ptr += 3;
880  }
882  num_bytes ? num_bytes : 1, NULL, 0);
883  if(size == 0) {
884  FIXME("Throw URIError: Invalid UTF sequence\n");
886  return E_FAIL;
887  }
888  len += size;
889  }else {
890  ++ptr;
891  ++len;
892  }
893  }
894 
895  ret = jsstr_alloc_buf(len, &out_ptr);
896  if(!ret) {
898  return E_OUTOFMEMORY;
899  }
900 
901  ptr = uri;
902  while(*ptr) {
903  if(*ptr == '%') {
904  char octets[4];
905  unsigned char mask = 0x80;
906  int i, size, num_bytes = 0;
907  octets[0] = (hex_to_int(*(ptr+1)) << 4) + hex_to_int(*(ptr+2));
908  ptr += 3;
909  while(octets[0] & mask) {
910  mask = mask >> 1;
911  ++num_bytes;
912  }
913  for(i = 1; i < num_bytes; ++i) {
914  octets[i] = (hex_to_int(*(ptr+1)) << 4) + hex_to_int(*(ptr+2));
915  ptr += 3;
916  }
918  num_bytes ? num_bytes : 1, out_ptr, len);
919  len -= size;
920  out_ptr += size;
921  }else {
922  *out_ptr++ = *ptr++;
923  --len;
924  }
925  }
926 
928 
929  if(r)
930  *r = jsval_string(ret);
931  else
933  return S_OK;
934 }
static int argc
Definition: ServiceArgs.c:12
#define MB_ERR_INVALID_CHARS
Definition: unicode.h:41
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
const char * uri
Definition: sec_mgr.c:1594
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
#define E_FAIL
Definition: ddrawi.h:102
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
Definition: glfuncs.h:248
GLenum GLint GLuint mask
Definition: glext.h:6028
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define CP_UTF8
Definition: nls.h:20
#define FIXME(fmt,...)
Definition: debug.h:110
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
ed2 num_bytes
Definition: write.c:2846
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
#define MultiByteToWideChar
Definition: compat.h:100
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
static int hex_to_int(const WCHAR wch)
Definition: global.c:467
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ JSGlobal_encodeURI()

static HRESULT JSGlobal_encodeURI ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 609 of file global.c.

611 {
612  const WCHAR *ptr, *uri;
613  jsstr_t *str, *ret;
614  DWORD len = 0, i;
615  char buf[4];
616  WCHAR *rptr;
617  HRESULT hres;
618 
619  TRACE("\n");
620 
621  if(!argc) {
622  if(r)
624  return S_OK;
625  }
626 
627  hres = to_flat_string(ctx, argv[0], &str, &uri);
628  if(FAILED(hres))
629  return hres;
630 
631  for(ptr = uri; *ptr; ptr++) {
632  if(is_uri_unescaped(*ptr) || is_uri_reserved(*ptr) || *ptr == '#') {
633  len++;
634  }else {
635  i = WideCharToMultiByte(CP_UTF8, 0, ptr, 1, NULL, 0, NULL, NULL)*3;
636  if(!i) {
639  }
640 
641  len += i;
642  }
643  }
644 
645  ret = jsstr_alloc_buf(len, &rptr);
646  if(!ret) {
648  return E_OUTOFMEMORY;
649  }
650 
651  for(ptr = uri; *ptr; ptr++) {
652  if(is_uri_unescaped(*ptr) || is_uri_reserved(*ptr) || *ptr == '#') {
653  *rptr++ = *ptr;
654  }else {
655  len = WideCharToMultiByte(CP_UTF8, 0, ptr, 1, buf, sizeof(buf), NULL, NULL);
656  for(i=0; i<len; i++) {
657  *rptr++ = '%';
658  *rptr++ = int_to_char((BYTE)buf[i] >> 4);
659  *rptr++ = int_to_char(buf[i] & 0x0f);
660  }
661  }
662  }
663 
664  TRACE("%s -> %s\n", debugstr_jsstr(str), debugstr_jsstr(ret));
666 
667  if(r)
668  *r = jsval_string(ret);
669  else
671  return S_OK;
672 }
static int argc
Definition: ServiceArgs.c:12
#define WideCharToMultiByte
Definition: compat.h:101
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
const char * uri
Definition: sec_mgr.c:1594
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static BOOL is_uri_reserved(WCHAR c)
Definition: global.c:92
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
HRESULT throw_uri_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:443
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
Definition: glfuncs.h:248
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define CP_UTF8
Definition: nls.h:20
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define JS_E_INVALID_URI_CHAR
Definition: jscript.h:569
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
const char * debugstr_jsstr(jsstr_t *str)
Definition: jsstr.c:37
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
static WCHAR int_to_char(int i)
Definition: global.c:109
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
static BOOL is_uri_unescaped(WCHAR c)
Definition: global.c:97
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ JSGlobal_encodeURIComponent()

static HRESULT JSGlobal_encodeURIComponent ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 760 of file global.c.

762 {
763  jsstr_t *str, *ret_str;
764  char buf[4];
765  const WCHAR *ptr, *uri;
766  DWORD len = 0, size, i;
767  WCHAR *ret;
768  HRESULT hres;
769 
770  TRACE("\n");
771 
772  if(!argc) {
773  if(r)
775  return S_OK;
776  }
777 
778  hres = to_flat_string(ctx, argv[0], &str, &uri);
779  if(FAILED(hres))
780  return hres;
781 
782  for(ptr = uri; *ptr; ptr++) {
783  if(is_uri_unescaped(*ptr))
784  len++;
785  else {
786  size = WideCharToMultiByte(CP_UTF8, 0, ptr, 1, NULL, 0, NULL, NULL);
787  if(!size) {
790  }
791  len += size*3;
792  }
793  }
794 
795  ret_str = jsstr_alloc_buf(len, &ret);
796  if(!ret_str) {
798  return E_OUTOFMEMORY;
799  }
800 
801  for(ptr = uri; *ptr; ptr++) {
802  if(is_uri_unescaped(*ptr)) {
803  *ret++ = *ptr;
804  }else {
805  size = WideCharToMultiByte(CP_UTF8, 0, ptr, 1, buf, sizeof(buf), NULL, NULL);
806  for(i=0; i<size; i++) {
807  *ret++ = '%';
808  *ret++ = int_to_char((BYTE)buf[i] >> 4);
809  *ret++ = int_to_char(buf[i] & 0x0f);
810  }
811  }
812  }
813 
815 
816  if(r)
817  *r = jsval_string(ret_str);
818  else
819  jsstr_release(ret_str);
820  return S_OK;
821 }
static int argc
Definition: ServiceArgs.c:12
#define WideCharToMultiByte
Definition: compat.h:101
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
const char * uri
Definition: sec_mgr.c:1594
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
HRESULT throw_uri_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:443
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
Definition: glfuncs.h:248
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define CP_UTF8
Definition: nls.h:20
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define JS_E_INVALID_URI_CHAR
Definition: jscript.h:569
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
static WCHAR int_to_char(int i)
Definition: global.c:109
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
static BOOL is_uri_unescaped(WCHAR c)
Definition: global.c:97
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ JSGlobal_escape()

static HRESULT JSGlobal_escape ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 116 of file global.c.

118 {
119  jsstr_t *ret_str, *str;
120  const WCHAR *ptr, *buf;
121  DWORD len = 0;
122  WCHAR *ret;
123  HRESULT hres;
124 
125  TRACE("\n");
126 
127  if(!argc) {
128  if(r)
130  return S_OK;
131  }
132 
133  hres = to_flat_string(ctx, argv[0], &str, &buf);
134  if(FAILED(hres))
135  return hres;
136 
137  for(ptr = buf; *ptr; ptr++) {
138  if(*ptr > 0xff)
139  len += 6;
140  else if(is_ecma_nonblank(*ptr))
141  len++;
142  else
143  len += 3;
144  }
145 
146  ret_str = jsstr_alloc_buf(len, &ret);
147  if(!ret_str) {
149  return E_OUTOFMEMORY;
150  }
151 
152  len = 0;
153  for(ptr = buf; *ptr; ptr++) {
154  if(*ptr > 0xff) {
155  ret[len++] = '%';
156  ret[len++] = 'u';
157  ret[len++] = int_to_char(*ptr >> 12);
158  ret[len++] = int_to_char((*ptr >> 8) & 0xf);
159  ret[len++] = int_to_char((*ptr >> 4) & 0xf);
160  ret[len++] = int_to_char(*ptr & 0xf);
161  }
162  else if(is_ecma_nonblank(*ptr))
163  ret[len++] = *ptr;
164  else {
165  ret[len++] = '%';
166  ret[len++] = int_to_char(*ptr >> 4);
167  ret[len++] = int_to_char(*ptr & 0xf);
168  }
169  }
170 
172 
173  if(r)
174  *r = jsval_string(ret_str);
175  else
176  jsstr_release(ret_str);
177  return S_OK;
178 }
static int argc
Definition: ServiceArgs.c:12
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static PVOID ptr
Definition: dispmode.c:27
static BOOL is_ecma_nonblank(const WCHAR c)
Definition: global.c:103
const WCHAR * str
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
static WCHAR int_to_char(int i)
Definition: global.c:109
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ JSGlobal_eval()

HRESULT JSGlobal_eval ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)

Definition at line 181 of file global.c.

183 {
184  call_frame_t *frame;
185  DWORD exec_flags = EXEC_EVAL;
186  bytecode_t *code;
187  const WCHAR *src;
188  HRESULT hres;
189 
190  TRACE("\n");
191 
192  if(!argc) {
193  if(r)
194  *r = jsval_undefined();
195  return S_OK;
196  }
197 
198  if(!is_string(argv[0])) {
199  if(r)
200  return jsval_copy(argv[0], r);
201  return S_OK;
202  }
203 
204  if(!(frame = ctx->call_ctx)) {
205  FIXME("No active exec_ctx\n");
206  return E_UNEXPECTED;
207  }
208 
210  if(!src)
211  return E_OUTOFMEMORY;
212 
213  TRACE("parsing %s\n", debugstr_jsval(argv[0]));
214  hres = compile_script(ctx, src, NULL, NULL, TRUE, FALSE, &code);
215  if(FAILED(hres)) {
216  WARN("parse (%s) failed: %08x\n", debugstr_jsval(argv[0]), hres);
217  return throw_syntax_error(ctx, hres, NULL);
218  }
219 
220  if(frame->flags & EXEC_GLOBAL)
221  exec_flags |= EXEC_GLOBAL;
223  exec_flags |= EXEC_RETURN_TO_INTERP;
224  hres = exec_source(ctx, exec_flags, code, &code->global_code, frame->scope,
225  frame->this_obj, NULL, frame->variable_obj, 0, NULL, r);
227  return hres;
228 }
static const WCHAR * jsstr_flatten(jsstr_t *str)
Definition: jsstr.h:139
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
DWORD flags
Definition: engine.h:234
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
jsdisp_t * variable_obj
Definition: engine.h:232
#define WARN(fmt,...)
Definition: debug.h:111
struct _call_frame_t * call_ctx
Definition: jscript.h:411
static BOOL is_string(parse_buffer *buf)
Definition: parsing.c:601
#define argv
Definition: mplay32.c:18
#define EXEC_RETURN_TO_INTERP
Definition: engine.h:250
#define EXEC_EVAL
Definition: engine.h:251
scope_chain_t * scope
Definition: engine.h:225
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT jsval_copy(jsval_t v, jsval_t *r)
Definition: jsutils.c:229
static jsstr_t * get_string(jsval_t v)
Definition: jsval.h:229
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
HRESULT throw_syntax_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:433
HRESULT compile_script(script_ctx_t *ctx, const WCHAR *code, const WCHAR *args, const WCHAR *delimiter, BOOL from_eval, BOOL use_decode, bytecode_t **ret)
Definition: compile.c:2458
HRESULT exec_source(script_ctx_t *ctx, DWORD flags, bytecode_t *bytecode, function_code_t *function, scope_chain_t *scope, IDispatch *this_obj, jsdisp_t *function_instance, jsdisp_t *variable_obj, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: engine.c:2952
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
#define EXEC_GLOBAL
Definition: engine.h:248
GLenum src
Definition: glext.h:6340
int code
Definition: i386-dis.c:3591
static jsval_t jsval_undefined(void)
Definition: jsval.h:137
#define S_OK
Definition: intsafe.h:59
IDispatch * this_obj
Definition: engine.h:230
#define DISPATCH_JSCRIPT_CALLEREXECSSOURCE
Definition: jscript.h:112
#define E_UNEXPECTED
Definition: winerror.h:2456
void release_bytecode(bytecode_t *code)
Definition: compile.c:2223
const char * debugstr_jsval(const jsval_t) DECLSPEC_HIDDEN
Definition: jsutils.c:33

Referenced by invoke_prop_func().

◆ JSGlobal_GetObject()

static HRESULT JSGlobal_GetObject ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 543 of file global.c.

545 {
546  FIXME("\n");
547  return E_NOTIMPL;
548 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ JSGlobal_isFinite()

static HRESULT JSGlobal_isFinite ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 253 of file global.c.

255 {
256  BOOL ret = FALSE;
257  HRESULT hres;
258 
259  TRACE("\n");
260 
261  if(argc) {
262  double n;
263 
264  hres = to_number(ctx, argv[0], &n);
265  if(FAILED(hres))
266  return hres;
267 
268  ret = is_finite(n);
269  }
270 
271  if(r)
272  *r = jsval_bool(ret);
273  return S_OK;
274 }
static int argc
Definition: ServiceArgs.c:12
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLdouble n
Definition: glext.h:7729
#define argv
Definition: mplay32.c:18
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
Definition: jsutils.c:601
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
int ret
BOOL is_finite(double) DECLSPEC_HIDDEN
Definition: jsutils.c:56
#define S_OK
Definition: intsafe.h:59
static jsval_t jsval_bool(BOOL b)
Definition: jsval.h:101

◆ JSGlobal_isNaN()

static HRESULT JSGlobal_isNaN ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 230 of file global.c.

232 {
233  BOOL ret = TRUE;
234  double n;
235  HRESULT hres;
236 
237  TRACE("\n");
238 
239  if(argc) {
240  hres = to_number(ctx, argv[0], &n);
241  if(FAILED(hres))
242  return hres;
243 
244  if(!isnan(n))
245  ret = FALSE;
246  }
247 
248  if(r)
249  *r = jsval_bool(ret);
250  return S_OK;
251 }
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLdouble n
Definition: glext.h:7729
#define argv
Definition: mplay32.c:18
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
Definition: jsutils.c:601
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
int ret
int isnan(double x)
#define S_OK
Definition: intsafe.h:59
static jsval_t jsval_bool(BOOL b)
Definition: jsval.h:101

◆ JSGlobal_parseFloat()

static HRESULT JSGlobal_parseFloat ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 368 of file global.c.

370 {
371  LONGLONG d = 0, hlp;
372  jsstr_t *val_str;
373  int exp = 0;
374  const WCHAR *str;
375  BOOL ret_nan = TRUE, positive = TRUE;
376  HRESULT hres;
377 
378  if(!argc) {
379  if(r)
380  *r = jsval_number(NAN);
381  return S_OK;
382  }
383 
384  hres = to_flat_string(ctx, argv[0], &val_str, &str);
385  if(FAILED(hres))
386  return hres;
387 
388  while(isspaceW(*str)) str++;
389 
390  if(*str == '+')
391  str++;
392  else if(*str == '-') {
393  positive = FALSE;
394  str++;
395  }
396 
397  if(isdigitW(*str))
398  ret_nan = FALSE;
399 
400  while(isdigitW(*str)) {
401  hlp = d*10 + *(str++) - '0';
402  if(d>MAXLONGLONG/10 || hlp<0) {
403  exp++;
404  break;
405  }
406  else
407  d = hlp;
408  }
409  while(isdigitW(*str)) {
410  exp++;
411  str++;
412  }
413 
414  if(*str == '.') str++;
415 
416  if(isdigitW(*str))
417  ret_nan = FALSE;
418 
419  while(isdigitW(*str)) {
420  hlp = d*10 + *(str++) - '0';
421  if(d>MAXLONGLONG/10 || hlp<0)
422  break;
423 
424  d = hlp;
425  exp--;
426  }
427  while(isdigitW(*str))
428  str++;
429 
430  if(*str && !ret_nan && (*str=='e' || *str=='E')) {
431  int sign = 1, e = 0;
432 
433  str++;
434  if(*str == '+')
435  str++;
436  else if(*str == '-') {
437  sign = -1;
438  str++;
439  }
440 
441  while(isdigitW(*str)) {
442  if(e>INT_MAX/10 || (e = e*10 + *str++ - '0')<0)
443  e = INT_MAX;
444  }
445  e *= sign;
446 
447  if(exp<0 && e<0 && exp+e>0) exp = INT_MIN;
448  else if(exp>0 && e>0 && exp+e<0) exp = INT_MAX;
449  else exp += e;
450  }
451 
452  jsstr_release(val_str);
453 
454  if(ret_nan) {
455  if(r)
456  *r = jsval_number(NAN);
457  return S_OK;
458  }
459 
460  if(!positive)
461  d = -d;
462  if(r)
463  *r = jsval_number(exp>0 ? d*pow(10, exp) : d/pow(10, -exp));
464  return S_OK;
465 }
static size_t double int int int * sign
Definition: printf.c:64
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
#define INT_MAX
Definition: limits.h:40
Definition: jsstr.h:39
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
WINE_UNICODE_INLINE int isspaceW(WCHAR wc)
Definition: unicode.h:165
#define MAXLONGLONG
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
unsigned int BOOL
Definition: ntddk_ex.h:94
float pow(float __x, int __y)
Definition: _cmath.h:458
#define e
Definition: ke_i.h:82
const WCHAR * str
int64_t LONGLONG
Definition: typedefs.h:66
HRESULT hres
Definition: protocol.c:465
#define d
Definition: ke_i.h:81
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define NAN
Definition: misc.c:46
#define INT_MIN
Definition: limits.h:39
#define S_OK
Definition: intsafe.h:59
WINE_UNICODE_INLINE int isdigitW(WCHAR wc)
Definition: unicode.h:170
DWORD exp
Definition: msg.c:15681
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790
static jsval_t jsval_number(double n)
Definition: jsval.h:144
Definition: unary.h:15

◆ JSGlobal_parseInt()

static HRESULT JSGlobal_parseInt ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 287 of file global.c.

289 {
290  BOOL neg = FALSE, empty = TRUE;
291  const WCHAR *ptr;
292  DOUBLE ret = 0.0;
293  INT radix=0, i;
294  jsstr_t *str;
295  HRESULT hres;
296 
297  if(!argc) {
298  if(r)
299  *r = jsval_number(NAN);
300  return S_OK;
301  }
302 
303  if(argc >= 2) {
304  hres = to_int32(ctx, argv[1], &radix);
305  if(FAILED(hres))
306  return hres;
307 
308  if(radix && (radix < 2 || radix > 36)) {
309  WARN("radix %d out of range\n", radix);
310  if(r)
311  *r = jsval_number(NAN);
312  return S_OK;
313  }
314  }
315 
316  hres = to_flat_string(ctx, argv[0], &str, &ptr);
317  if(FAILED(hres))
318  return hres;
319 
320  while(isspaceW(*ptr))
321  ptr++;
322 
323  switch(*ptr) {
324  case '+':
325  ptr++;
326  break;
327  case '-':
328  neg = TRUE;
329  ptr++;
330  break;
331  }
332 
333  if(!radix) {
334  if(*ptr == '0') {
335  if(ptr[1] == 'x' || ptr[1] == 'X') {
336  radix = 16;
337  ptr += 2;
338  }else {
339  radix = 8;
340  ptr++;
341  empty = FALSE;
342  }
343  }else {
344  radix = 10;
345  }
346  }
347 
348  i = char_to_int(*ptr++);
349  if(i < radix) {
350  do {
351  ret = ret*radix + i;
352  i = char_to_int(*ptr++);
353  }while(i < radix);
354  }else if(empty) {
355  ret = NAN;
356  }
357 
359 
360  if(neg)
361  ret = -ret;
362 
363  if(r)
364  *r = jsval_number(ret);
365  return S_OK;
366 }
static int argc
Definition: ServiceArgs.c:12
#define TRUE
Definition: types.h:120
Definition: jsstr.h:39
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static const WCHAR empty[]
Definition: main.c:49
WINE_UNICODE_INLINE int isspaceW(WCHAR wc)
Definition: unicode.h:165
#define WARN(fmt,...)
Definition: debug.h:111
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
int32_t INT
Definition: typedefs.h:56
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
HRESULT to_int32(script_ctx_t *, jsval_t, INT *) DECLSPEC_HIDDEN
Definition: jsutils.c:657
HRESULT hres
Definition: protocol.c:465
static INT char_to_int(WCHAR c)
Definition: global.c:276
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define NAN
Definition: misc.c:46
int ret
#define S_OK
Definition: intsafe.h:59
double DOUBLE
Definition: typedefs.h:68
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790
static jsval_t jsval_number(double n)
Definition: jsval.h:144

◆ JSGlobal_ScriptEngine()

static HRESULT JSGlobal_ScriptEngine ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 550 of file global.c.

552 {
553  static const WCHAR JScriptW[] = {'J','S','c','r','i','p','t',0};
554 
555  TRACE("\n");
556 
557  if(r) {
558  jsstr_t *ret;
559 
560  ret = jsstr_alloc(JScriptW);
561  if(!ret)
562  return E_OUTOFMEMORY;
563 
564  *r = jsval_string(ret);
565  }
566 
567  return S_OK;
568 }
static jsstr_t * jsstr_alloc(const WCHAR *str)
Definition: jsstr.h:103
Definition: jsstr.h:39
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
int ret
#define S_OK
Definition: intsafe.h:59

◆ JSGlobal_ScriptEngineBuildVersion()

static HRESULT JSGlobal_ScriptEngineBuildVersion ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 590 of file global.c.

592 {
593  TRACE("\n");
594 
595  if(r)
597  return S_OK;
598 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define JSCRIPT_BUILD_VERSION
Definition: resource.h:25
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static jsval_t jsval_number(double n)
Definition: jsval.h:144

◆ JSGlobal_ScriptEngineMajorVersion()

static HRESULT JSGlobal_ScriptEngineMajorVersion ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 570 of file global.c.

572 {
573  TRACE("\n");
574 
575  if(r)
577  return S_OK;
578 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define JSCRIPT_MAJOR_VERSION
Definition: resource.h:23
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static jsval_t jsval_number(double n)
Definition: jsval.h:144

◆ JSGlobal_ScriptEngineMinorVersion()

static HRESULT JSGlobal_ScriptEngineMinorVersion ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 580 of file global.c.

582 {
583  TRACE("\n");
584 
585  if(r)
587  return S_OK;
588 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define JSCRIPT_MINOR_VERSION
Definition: resource.h:24
static jsval_t jsval_number(double n)
Definition: jsval.h:144

◆ JSGlobal_unescape()

static HRESULT JSGlobal_unescape ( script_ctx_t ctx,
vdisp_t jsthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 473 of file global.c.

475 {
476  jsstr_t *ret_str, *str;
477  const WCHAR *ptr, *buf;
478  DWORD len = 0;
479  WCHAR *ret;
480  HRESULT hres;
481 
482  TRACE("\n");
483 
484  if(!argc) {
485  if(r)
487  return S_OK;
488  }
489 
490  hres = to_flat_string(ctx, argv[0], &str, &buf);
491  if(FAILED(hres))
492  return hres;
493 
494  for(ptr = buf; *ptr; ptr++) {
495  if(*ptr == '%') {
496  if(hex_to_int(*(ptr+1))!=-1 && hex_to_int(*(ptr+2))!=-1)
497  ptr += 2;
498  else if(*(ptr+1)=='u' && hex_to_int(*(ptr+2))!=-1 && hex_to_int(*(ptr+3))!=-1
499  && hex_to_int(*(ptr+4))!=-1 && hex_to_int(*(ptr+5))!=-1)
500  ptr += 5;
501  }
502 
503  len++;
504  }
505 
506  ret_str = jsstr_alloc_buf(len, &ret);
507  if(!ret_str) {
509  return E_OUTOFMEMORY;
510  }
511 
512  len = 0;
513  for(ptr = buf; *ptr; ptr++) {
514  if(*ptr == '%') {
515  if(hex_to_int(*(ptr+1))!=-1 && hex_to_int(*(ptr+2))!=-1) {
516  ret[len] = (hex_to_int(*(ptr+1))<<4) + hex_to_int(*(ptr+2));
517  ptr += 2;
518  }
519  else if(*(ptr+1)=='u' && hex_to_int(*(ptr+2))!=-1 && hex_to_int(*(ptr+3))!=-1
520  && hex_to_int(*(ptr+4))!=-1 && hex_to_int(*(ptr+5))!=-1) {
521  ret[len] = (hex_to_int(*(ptr+2))<<12) + (hex_to_int(*(ptr+3))<<8)
522  + (hex_to_int(*(ptr+4))<<4) + hex_to_int(*(ptr+5));
523  ptr += 5;
524  }
525  else
526  ret[len] = *ptr;
527  }
528  else
529  ret[len] = *ptr;
530 
531  len++;
532  }
533 
535 
536  if(r)
537  *r = jsval_string(ret_str);
538  else
539  jsstr_release(ret_str);
540  return S_OK;
541 }
static int argc
Definition: ServiceArgs.c:12
jsstr_t * jsstr_undefined(void)
Definition: jsstr.c:293
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define S_OK
Definition: intsafe.h:59
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
static int hex_to_int(const WCHAR wch)
Definition: global.c:467
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
Definition: jsutils.c:790

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( jscript  )

Variable Documentation

◆ _GetObjectW

const WCHAR _GetObjectW[] = {'G','e','t','O','b','j','e','c','t',0}
static

Definition at line 60 of file global.c.

◆ ActiveXObjectW

const WCHAR ActiveXObjectW[] = {'A','c','t','i','v','e','X','O','b','j','e','c','t',0}
static

Definition at line 50 of file global.c.

Referenced by create_activex_constr(), and init_global().

◆ ArrayW

const WCHAR ArrayW[] = {'A','r','r','a','y',0}
static

Definition at line 34 of file global.c.

Referenced by create_array_constr(), and init_constructors().

◆ BooleanW

const WCHAR BooleanW[] = {'B','o','o','l','e','a','n',0}
static

Definition at line 35 of file global.c.

Referenced by create_bool_constr(), Global_TypeName(), and init_constructors().

◆ CollectGarbageW

const WCHAR CollectGarbageW[] = {'C','o','l','l','e','c','t','G','a','r','b','a','g','e',0}
static

Definition at line 68 of file global.c.

◆ DateW

const WCHAR DateW[] = {'D','a','t','e',0}
static

Definition at line 36 of file global.c.

Referenced by create_date_constr(), Global_TypeName(), and init_constructors().

◆ decodeURIComponentW

const WCHAR decodeURIComponentW[] = {'d','e','c','o','d','e','U','R','I','C','o','m','p','o','n','e','n','t',0}
static

Definition at line 74 of file global.c.

◆ decodeURIW

const WCHAR decodeURIW[] = {'d','e','c','o','d','e','U','R','I',0}
static

Definition at line 72 of file global.c.

◆ encodeURIComponentW

const WCHAR encodeURIComponentW[] = {'e','n','c','o','d','e','U','R','I','C','o','m','p','o','n','e','n','t',0}
static

Definition at line 73 of file global.c.

◆ encodeURIW

const WCHAR encodeURIW[] = {'e','n','c','o','d','e','U','R','I',0}
static

Definition at line 71 of file global.c.

◆ EnumeratorW

const WCHAR EnumeratorW[] = {'E','n','u','m','e','r','a','t','o','r',0}
static

Definition at line 52 of file global.c.

Referenced by create_enumerator_constr(), and init_constructors().

◆ ErrorW

const WCHAR ErrorW[] = {'E','r','r','o','r',0}
static

Definition at line 37 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ escapeW

const WCHAR escapeW[] = {'e','s','c','a','p','e',0}
static

Definition at line 53 of file global.c.

◆ EvalErrorW

const WCHAR EvalErrorW[] = {'E','v','a','l','E','r','r','o','r',0}
static

Definition at line 38 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ evalW

const WCHAR evalW[] = {'e','v','a','l',0}
static

Definition at line 54 of file global.c.

◆ FunctionW

const WCHAR FunctionW[] = {'F','u','n','c','t','i','o','n',0}
static

Definition at line 44 of file global.c.

Referenced by init_constructors(), and init_function_constr().

◆ InfinityW

const WCHAR InfinityW[] = {'I','n','f','i','n','i','t','y',0}
static

Definition at line 33 of file global.c.

Referenced by double_to_string(), and init_global().

◆ isFiniteW

const WCHAR isFiniteW[] = {'i','s','F','i','n','i','t','e',0}
static

Definition at line 56 of file global.c.

◆ isNaNW

const WCHAR isNaNW[] = {'i','s','N','a','N',0}
static

Definition at line 55 of file global.c.

◆ JSGlobal_info

const builtin_info_t JSGlobal_info
static
Initial value:
= {
{NULL, NULL, 0},
}
smooth NULL
Definition: ftsmooth.c:416
static const builtin_prop_t JSGlobal_props[]
Definition: global.c:936
#define ARRAY_SIZE(a)
Definition: main.h:24

Definition at line 956 of file global.c.

Referenced by init_global().

◆ JSGlobal_props

const builtin_prop_t JSGlobal_props[]
static
Initial value:
= {
}
static const WCHAR decodeURIW[]
Definition: global.c:72
static const WCHAR _GetObjectW[]
Definition: global.c:60
static const WCHAR ScriptEngineW[]
Definition: global.c:61
static const WCHAR escapeW[]
Definition: global.c:53
static const WCHAR encodeURIW[]
Definition: global.c:71
static HRESULT JSGlobal_parseInt(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:287
static const WCHAR ScriptEngineMinorVersionW[]
Definition: global.c:64
static const WCHAR isNaNW[]
Definition: global.c:55
HRESULT JSGlobal_eval(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:181
static const WCHAR unescapeW[]
Definition: global.c:59
static HRESULT JSGlobal_ScriptEngineBuildVersion(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:590
static HRESULT JSGlobal_encodeURIComponent(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:760
static HRESULT JSGlobal_ScriptEngineMinorVersion(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:580
static const WCHAR ScriptEngineBuildVersionW[]
Definition: global.c:66
static const WCHAR CollectGarbageW[]
Definition: global.c:68
static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:368
static const WCHAR ScriptEngineMajorVersionW[]
Definition: global.c:62
static HRESULT JSGlobal_unescape(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:473
static HRESULT JSGlobal_decodeURIComponent(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:824
static const WCHAR isFiniteW[]
Definition: global.c:56
static HRESULT JSGlobal_CollectGarbage(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:600
static HRESULT JSGlobal_ScriptEngineMajorVersion(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:570
static const WCHAR evalW[]
Definition: global.c:54
static HRESULT JSGlobal_escape(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:116
static HRESULT JSGlobal_isFinite(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:253
static const WCHAR parseFloatW[]
Definition: global.c:58
static HRESULT JSGlobal_encodeURI(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:609
static HRESULT JSGlobal_isNaN(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:230
#define PROPF_METHOD
Definition: jscript.h:94
static HRESULT JSGlobal_decodeURI(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:674
static HRESULT JSGlobal_GetObject(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:543
static const WCHAR encodeURIComponentW[]
Definition: global.c:73
static HRESULT JSGlobal_ScriptEngine(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: global.c:550
static const WCHAR decodeURIComponentW[]
Definition: global.c:74
static const WCHAR parseIntW[]
Definition: global.c:57

Definition at line 936 of file global.c.

◆ JSONW

const WCHAR JSONW[] = {'J','S','O','N',0}
static

Definition at line 70 of file global.c.

Referenced by init_global().

◆ MathW

const WCHAR MathW[] = {'M','a','t','h',0}
static

Definition at line 69 of file global.c.

Referenced by init_global().

◆ NaNW

const WCHAR NaNW[] = {'N','a','N',0}
static

Definition at line 32 of file global.c.

Referenced by init_global(), and init_strings().

◆ NumberW

const WCHAR NumberW[] = {'N','u','m','b','e','r',0}
static

Definition at line 45 of file global.c.

Referenced by create_number_constr(), and init_constructors().

◆ ObjectW

const WCHAR ObjectW[] = {'O','b','j','e','c','t',0}
static

Definition at line 46 of file global.c.

Referenced by create_object_constr(), and init_constructors().

◆ parseFloatW

const WCHAR parseFloatW[] = {'p','a','r','s','e','F','l','o','a','t',0}
static

Definition at line 58 of file global.c.

◆ parseIntW

const WCHAR parseIntW[] = {'p','a','r','s','e','I','n','t',0}
static

Definition at line 57 of file global.c.

◆ RangeErrorW

const WCHAR RangeErrorW[] = {'R','a','n','g','e','E','r','r','o','r',0}
static

Definition at line 39 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ ReferenceErrorW

const WCHAR ReferenceErrorW[] = {'R','e','f','e','r','e','n','c','e','E','r','r','o','r',0}
static

Definition at line 40 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ RegExpErrorW

const WCHAR RegExpErrorW[] = {'R','e','g','E','x','p','E','r','r','o','r',0}
static

Definition at line 49 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ RegExpW

const WCHAR RegExpW[] = {'R','e','g','E','x','p',0}
static

Definition at line 48 of file global.c.

Referenced by create_regexp_constr(), and init_constructors().

◆ ScriptEngineBuildVersionW

const WCHAR ScriptEngineBuildVersionW[]
static
Initial value:
=
{'S','c','r','i','p','t','E','n','g','i','n','e','B','u','i','l','d','V','e','r','s','i','o','n',0}

Definition at line 66 of file global.c.

◆ ScriptEngineMajorVersionW

const WCHAR ScriptEngineMajorVersionW[]
static
Initial value:
=
{'S','c','r','i','p','t','E','n','g','i','n','e','M','a','j','o','r','V','e','r','s','i','o','n',0}

Definition at line 62 of file global.c.

◆ ScriptEngineMinorVersionW

const WCHAR ScriptEngineMinorVersionW[]
static
Initial value:
=
{'S','c','r','i','p','t','E','n','g','i','n','e','M','i','n','o','r','V','e','r','s','i','o','n',0}

Definition at line 64 of file global.c.

◆ ScriptEngineW

const WCHAR ScriptEngineW[] = {'S','c','r','i','p','t','E','n','g','i','n','e',0}
static

Definition at line 61 of file global.c.

◆ StringW

const WCHAR StringW[] = {'S','t','r','i','n','g',0}
static

◆ SyntaxErrorW

const WCHAR SyntaxErrorW[] = {'S','y','n','t','a','x','E','r','r','o','r',0}
static

Definition at line 41 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ TypeErrorW

const WCHAR TypeErrorW[] = {'T','y','p','e','E','r','r','o','r',0}
static

Definition at line 42 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ undefinedW

const WCHAR undefinedW[] = {'u','n','d','e','f','i','n','e','d',0}
static

Definition at line 76 of file global.c.

Referenced by init_global().

◆ unescapeW

const WCHAR unescapeW[] = {'u','n','e','s','c','a','p','e',0}
static

Definition at line 59 of file global.c.

◆ uri_char_table

int uri_char_table[]
static
Initial value:
= {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,2,0,0,1,0,1,2,2,2,2,1,1,2,2,1,
2,2,2,2,2,2,2,2,2,2,1,1,0,1,0,1,
1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,
0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,0,
}

Definition at line 78 of file global.c.

Referenced by is_uri_reserved(), and is_uri_unescaped().

◆ URIErrorW

const WCHAR URIErrorW[] = {'U','R','I','E','r','r','o','r',0}
static

Definition at line 43 of file global.c.

Referenced by init_constructors(), and init_error_constr().

◆ VBArrayW

const WCHAR VBArrayW[] = {'V','B','A','r','r','a','y',0}
static

Definition at line 51 of file global.c.

Referenced by create_vbarray_constr(), and init_constructors().