ReactOS 0.4.17-dev-357-ga8f14ff
bool.c File Reference
#include <assert.h>
#include "jscript.h"
#include "wine/debug.h"
Include dependency graph for bool.c:

Go to the source code of this file.

Classes

struct  BoolInstance
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (jscript)
 
static BoolInstancebool_from_jsdisp (jsdisp_t *jsdisp)
 
static HRESULT boolval_this (jsval_t vthis, BOOL *ret)
 
BOOL bool_obj_value (jsdisp_t *obj)
 
static HRESULT Bool_toString (script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT Bool_valueOf (script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT Bool_value (script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT BoolConstr_value (script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
 
static HRESULT alloc_bool (script_ctx_t *ctx, jsdisp_t *object_prototype, BoolInstance **ret)
 
HRESULT create_bool_constr (script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
 
HRESULT create_bool (script_ctx_t *ctx, BOOL bval, jsdisp_t **ret)
 

Variables

static const builtin_prop_t Bool_props []
 
static const builtin_info_t Bool_info
 
static const builtin_info_t BoolInst_info
 

Function Documentation

◆ alloc_bool()

static HRESULT alloc_bool ( script_ctx_t ctx,
jsdisp_t object_prototype,
BoolInstance **  ret 
)
static

Definition at line 173 of file bool.c.

174{
177
178 b = calloc(1, sizeof(BoolInstance));
179 if(!b)
180 return E_OUTOFMEMORY;
181
182 if(object_prototype)
183 hres = init_dispex(&b->dispex, ctx, &Bool_info, object_prototype);
184 else
185 hres = init_dispex_from_constr(&b->dispex, ctx, &BoolInst_info, ctx->bool_constr);
186
187 if(FAILED(hres)) {
188 free(b);
189 return hres;
190 }
191
192 *ret = b;
193 return S_OK;
194}
static const builtin_info_t Bool_info
Definition: bool.c:121
static const builtin_info_t BoolInst_info
Definition: bool.c:128
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
return ret
Definition: mutex.c:146
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
Definition: dispex.c:2512
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:2454
#define b
Definition: ke_i.h:79
HRESULT hres
Definition: protocol.c:465
#define calloc
Definition: rosglue.h:14

Referenced by create_bool(), and create_bool_constr().

◆ bool_from_jsdisp()

static BoolInstance * bool_from_jsdisp ( jsdisp_t jsdisp)
inlinestatic

Definition at line 34 of file bool.c.

35{
36 return CONTAINING_RECORD(jsdisp, BoolInstance, dispex);
37}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by bool_obj_value(), and boolval_this().

◆ bool_obj_value()

BOOL bool_obj_value ( jsdisp_t obj)

Definition at line 51 of file bool.c.

52{
54 return bool_from_jsdisp(obj)->val;
55}
static BoolInstance * bool_from_jsdisp(jsdisp_t *jsdisp)
Definition: bool.c:34
#define assert(_expr)
Definition: assert.h:32
@ JSCLASS_BOOLEAN
Definition: jscript.h:105
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
Definition: jscript.h:503
BOOL val
Definition: bool.c:31

Referenced by maybe_to_primitive().

◆ Bool_toString()

static HRESULT Bool_toString ( script_ctx_t ctx,
jsval_t  vthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 58 of file bool.c.

59{
60 BOOL boolval;
62
63 TRACE("\n");
64
65 hres = boolval_this(vthis, &boolval);
66 if(FAILED(hres))
67 return hres;
68
69 if(r) {
70 jsstr_t *val;
71
72 val = jsstr_alloc(boolval ? L"true" : L"false");
73 if(!val)
74 return E_OUTOFMEMORY;
75
76 *r = jsval_string(val);
77 }
78
79 return S_OK;
80}
static HRESULT boolval_this(jsval_t vthis, BOOL *ret)
Definition: bool.c:39
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint GLfloat * val
Definition: glext.h:7180
static jsstr_t * jsstr_alloc(const WCHAR *str)
Definition: jsstr.h:100
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
#define TRACE(s)
Definition: solgame.cpp:4
Definition: jsstr.h:36

◆ Bool_value()

static HRESULT Bool_value ( script_ctx_t ctx,
jsval_t  vthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 99 of file bool.c.

101{
102 TRACE("\n");
103
104 switch(flags) {
105 case INVOKE_FUNC:
107 default:
108 FIXME("unimplemented flags %x\n", flags);
109 return E_NOTIMPL;
110 }
111
112 return S_OK;
113
114}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
GLbitfield flags
Definition: glext.h:7161
#define JS_E_FUNCTION_EXPECTED
Definition: jscript.h:552

◆ Bool_valueOf()

static HRESULT Bool_valueOf ( script_ctx_t ctx,
jsval_t  vthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 83 of file bool.c.

84{
85 BOOL boolval;
87
88 TRACE("\n");
89
90 hres = boolval_this(vthis, &boolval);
91 if(FAILED(hres))
92 return hres;
93
94 if(r)
95 *r = jsval_bool(boolval);
96 return S_OK;
97}
static jsval_t jsval_bool(BOOL b)
Definition: jsval.h:101

◆ BoolConstr_value()

static HRESULT BoolConstr_value ( script_ctx_t ctx,
jsval_t  vthis,
WORD  flags,
unsigned  argc,
jsval_t argv,
jsval_t r 
)
static

Definition at line 133 of file bool.c.

135{
136 BOOL value = FALSE;
138
139 if(argc) {
140 hres = to_boolean(argv[0], &value);
141 if(FAILED(hres))
142 return hres;
143 }
144
145 switch(flags) {
146 case DISPATCH_CONSTRUCT: {
147 jsdisp_t *b;
148
149 if(!r)
150 return S_OK;
151
152 hres = create_bool(ctx, value, &b);
153 if(FAILED(hres))
154 return hres;
155
156 *r = jsval_obj(b);
157 return S_OK;
158 }
159
160 case INVOKE_FUNC:
161 if(r)
162 *r = jsval_bool(value);
163 return S_OK;
164
165 default:
166 FIXME("unimplemented flags %x\n", flags);
167 return E_NOTIMPL;
168 }
169
170 return S_OK;
171}
HRESULT create_bool(script_ctx_t *ctx, BOOL bval, jsdisp_t **ret)
Definition: bool.c:212
#define FALSE
Definition: types.h:117
MonoAssembly int argc
Definition: metahost.c:107
HRESULT to_boolean(jsval_t, BOOL *)
Definition: jsutils.c:489
static jsval_t jsval_obj(jsdisp_t *obj)
Definition: jsval.h:125
#define argv
Definition: mplay32.c:18
Definition: pdh_main.c:96

Referenced by create_bool_constr().

◆ boolval_this()

static HRESULT boolval_this ( jsval_t  vthis,
BOOL ret 
)
inlinestatic

Definition at line 39 of file bool.c.

40{
41 jsdisp_t *jsdisp;
42 if(is_bool(vthis))
43 *ret = get_bool(vthis);
44 else if(is_object_instance(vthis) && (jsdisp = to_jsdisp(get_object(vthis))) && is_class(jsdisp, JSCLASS_BOOLEAN))
45 *ret = bool_from_jsdisp(jsdisp)->val;
46 else
48 return S_OK;
49}
static BOOL get_bool(D3DXPARAMETER_TYPE type, const void *data)
jsdisp_t * to_jsdisp(IDispatch *disp)
Definition: dispex.c:2447
#define JS_E_BOOLEAN_EXPECTED
Definition: jscript.h:558
static IDispatch * get_object(jsval_t v)
Definition: jsval.h:228
static BOOL is_object_instance(jsval_t v)
Definition: jsval.h:175
static BOOL is_bool(jsval_t v)
Definition: jsval.h:214

Referenced by Bool_toString(), and Bool_valueOf().

◆ create_bool()

HRESULT create_bool ( script_ctx_t ctx,
BOOL  bval,
jsdisp_t **  ret 
)

Definition at line 212 of file bool.c.

213{
216
217 hres = alloc_bool(ctx, NULL, &b);
218 if(FAILED(hres))
219 return hres;
220
221 b->val = bval;
222
223 *ret = &b->dispex;
224 return S_OK;
225}
static HRESULT alloc_bool(script_ctx_t *ctx, jsdisp_t *object_prototype, BoolInstance **ret)
Definition: bool.c:173
float bval
Definition: cylfrac.c:48
#define NULL
Definition: types.h:112

Referenced by BoolConstr_value(), and to_object().

◆ create_bool_constr()

HRESULT create_bool_constr ( script_ctx_t ctx,
jsdisp_t object_prototype,
jsdisp_t **  ret 
)

Definition at line 196 of file bool.c.

197{
200
201 hres = alloc_bool(ctx, object_prototype, &b);
202 if(FAILED(hres))
203 return hres;
204
206 PROPF_CONSTR|1, &b->dispex, ret);
207
208 jsdisp_release(&b->dispex);
209 return hres;
210}
static HRESULT BoolConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: bool.c:133
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)
Definition: function.c:809
ULONG jsdisp_release(jsdisp_t *obj)
Definition: dispex.c:1911
const unsigned int PROPF_CONSTR
Definition: jsdisp.idl:34

Referenced by init_constructors().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( jscript  )

Variable Documentation

◆ Bool_info

const builtin_info_t Bool_info
static
Initial value:
= {
.class = JSCLASS_BOOLEAN,
.call = Bool_value,
.props_cnt = ARRAY_SIZE(Bool_props),
.props = Bool_props,
}
#define ARRAY_SIZE(A)
Definition: main.h:20
static HRESULT Bool_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: bool.c:99
static const builtin_prop_t Bool_props[]
Definition: bool.c:116

Definition at line 121 of file bool.c.

Referenced by alloc_bool().

◆ Bool_props

const builtin_prop_t Bool_props[]
static
Initial value:
= {
{L"toString", Bool_toString, PROPF_METHOD},
}
static HRESULT Bool_toString(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: bool.c:58
static HRESULT Bool_valueOf(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: bool.c:83
const unsigned int PROPF_METHOD
Definition: jsdisp.idl:33

Definition at line 116 of file bool.c.

◆ BoolInst_info

const builtin_info_t BoolInst_info
static
Initial value:
= {
.class = JSCLASS_BOOLEAN,
.call = Bool_value,
}

Definition at line 128 of file bool.c.

Referenced by alloc_bool().