OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _JS_DEFINE_H_ | 7 #ifndef _JS_DEFINE_H_ |
8 #define _JS_DEFINE_H_ | 8 #define _JS_DEFINE_H_ |
9 | 9 |
10 typedef v8::Value JSValue; | 10 typedef v8::Value JSValue; |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 return ;\ | 196 return ;\ |
197 }\ | 197 }\ |
198 } | 198 } |
199 | 199 |
200 /* ===================================== JS CLASS ==============================
================= */ | 200 /* ===================================== JS CLASS ==============================
================= */ |
201 | 201 |
202 #define DECLARE_JS_CLASS(js_class_name) \ | 202 #define DECLARE_JS_CLASS(js_class_name) \ |
203 static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj,JSFXObject
global);\ | 203 static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj,JSFXObject
global);\ |
204 static JSBool JSDestructor(JSFXObject obj);\ | 204 static JSBool JSDestructor(JSFXObject obj);\ |
205 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 205 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |
206 static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ | |
207 static void GetProperties(JSPropertySpec*& pProperties, int& nSize);\ | |
208 static void GetMethods(JSMethodSpec*& pMethods, int& nSize);\ | |
209 static JSConstSpec JS_Class_Consts[];\ | 206 static JSConstSpec JS_Class_Consts[];\ |
210 static JSPropertySpec JS_Class_Properties[];\ | 207 static JSPropertySpec JS_Class_Properties[];\ |
211 static JSMethodSpec JS_Class_Methods[];\ | 208 static JSMethodSpec JS_Class_Methods[];\ |
212 static const wchar_t* m_pClassName | 209 static const wchar_t* m_pClassName |
213 | 210 |
214 #define IMPLEMENT_JS_CLASS_RICH(js_class_name, class_alternate, class_name) \ | 211 #define IMPLEMENT_JS_CLASS_RICH(js_class_name, class_alternate, class_name) \ |
215 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ | 212 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ |
216 JSBool js_class_name::JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
t global)\ | 213 JSBool js_class_name::JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
t global)\ |
217 {\ | 214 {\ |
218 CJS_Object* pObj = FX_NEW js_class_name(obj);\ | 215 CJS_Object* pObj = FX_NEW js_class_name(obj);\ |
(...skipping 22 matching lines...) Expand all Loading... |
241 if (JS_DefineObjProperty(pRuntime, nObjDefnID, JS_Class_
Properties[j].pName, JS_Class_Properties[j].pPropGet, JS_Class_Properties[j].pPr
opPut) < 0) return -1;\ | 238 if (JS_DefineObjProperty(pRuntime, nObjDefnID, JS_Class_
Properties[j].pName, JS_Class_Properties[j].pPropGet, JS_Class_Properties[j].pPr
opPut) < 0) return -1;\ |
242 }\ | 239 }\ |
243 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
1; k<szk; k++)\ | 240 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
1; k<szk; k++)\ |
244 {\ | 241 {\ |
245 if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
hods[k].pName, JS_Class_Methods[k].pMethodCall, JS_Class_Methods[k].nParamNum) <
0) return -1;\ | 242 if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
hods[k].pName, JS_Class_Methods[k].pMethodCall, JS_Class_Methods[k].nParamNum) <
0) return -1;\ |
246 }\ | 243 }\ |
247 return nObjDefnID;\ | 244 return nObjDefnID;\ |
248 }\ | 245 }\ |
249 return -1;\ | 246 return -1;\ |
250 }\ | 247 }\ |
251 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ | |
252 {\ | |
253 pConsts = JS_Class_Consts;\ | |
254 nSize = sizeof(JS_Class_Consts) / sizeof(JSConstSpec) - 1;\ | |
255 }\ | |
256 void js_class_name::GetProperties(JSPropertySpec*& pProperties, int& nSize)\ | |
257 {\ | |
258 pProperties = JS_Class_Properties;\ | |
259 nSize = sizeof(JS_Class_Properties) / sizeof(JSPropertySpec) - 1;\ | |
260 }\ | |
261 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\ | |
262 {\ | |
263 pMethods = JS_Class_Methods;\ | |
264 nSize = sizeof(JS_Class_Methods) / sizeof(JSMethodSpec) - 1;\ | |
265 } | |
266 | 248 |
267 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) IMPLEMENT_JS_CLASS_RICH(js
_class_name, class_name, class_name) | 249 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) IMPLEMENT_JS_CLASS_RICH(js
_class_name, class_name, class_name) |
268 | 250 |
269 /* ======================================== CONST CLASS ========================
==================== */ | 251 /* ======================================== CONST CLASS ========================
==================== */ |
270 | 252 |
271 #define DECLARE_JS_CLASS_CONST() \ | 253 #define DECLARE_JS_CLASS_CONST() \ |
272 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 254 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |
273 static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ | |
274 static JSConstSpec JS_Class_Consts[];\ | 255 static JSConstSpec JS_Class_Consts[];\ |
275 static const wchar_t* m_pClassName | 256 static const wchar_t* m_pClassName |
276 | 257 |
277 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ | 258 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ |
278 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ | 259 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ |
279 int js_class_name::Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType)\ | 260 int js_class_name::Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType)\ |
280 {\ | 261 {\ |
281 int nObjDefnID = JS_DefineObj(pRuntime, js_class_name::m_pClassName, eOb
jType, NULL, NULL, 0);\ | 262 int nObjDefnID = JS_DefineObj(pRuntime, js_class_name::m_pClassName, eOb
jType, NULL, NULL, 0);\ |
282 if (nObjDefnID >=0)\ | 263 if (nObjDefnID >=0)\ |
283 {\ | 264 {\ |
284 for (int i=0, sz=sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;
i<sz; i++)\ | 265 for (int i=0, sz=sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;
i<sz; i++)\ |
285 {\ | 266 {\ |
286 if (JS_Class_Consts[i].t == 0)\ | 267 if (JS_Class_Consts[i].t == 0)\ |
287 {\ | 268 {\ |
288 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_C
lass_Consts[i].pName, JS_NewNumber(pRuntime,JS_Class_Consts[i].number)) < 0) ret
urn -1;\ | 269 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_C
lass_Consts[i].pName, JS_NewNumber(pRuntime,JS_Class_Consts[i].number)) < 0) ret
urn -1;\ |
289 }\ | 270 }\ |
290 else\ | 271 else\ |
291 {\ | 272 {\ |
292 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_Class_Con
sts[i].pName, JS_NewString(pRuntime,JS_Class_Consts[i].string)) < 0) return -1;\ | 273 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_Class_Con
sts[i].pName, JS_NewString(pRuntime,JS_Class_Consts[i].string)) < 0) return -1;\ |
293 }\ | 274 }\ |
294 }\ | 275 }\ |
295 return nObjDefnID;\ | 276 return nObjDefnID;\ |
296 }\ | 277 }\ |
297 return -1;\ | 278 return -1;\ |
298 }\ | |
299 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ | |
300 {\ | |
301 pConsts = JS_Class_Consts;\ | |
302 nSize = sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;\ | |
303 } | 279 } |
304 | 280 |
305 /* ===================================== SPECIAL JS CLASS ======================
========================= */ | 281 /* ===================================== SPECIAL JS CLASS ======================
========================= */ |
306 | 282 |
307 #define DECLARE_SPECIAL_JS_CLASS(js_class_name) \ | 283 #define DECLARE_SPECIAL_JS_CLASS(js_class_name) \ |
308 static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
t global);\ | 284 static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
t global);\ |
309 static JSBool JSDestructor(JSFXObject obj);\ | 285 static JSBool JSDestructor(JSFXObject obj);\ |
310 static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ | |
311 static void GetProperties(JSPropertySpec*& pProperties, int& nSize);\ | |
312 static void GetMethods(JSMethodSpec*& pMethods, int& nSize);\ | |
313 static JSConstSpec JS_Class_Consts[];\ | 286 static JSConstSpec JS_Class_Consts[];\ |
314 static JSPropertySpec JS_Class_Properties[];\ | 287 static JSPropertySpec JS_Class_Properties[];\ |
315 static JSMethodSpec JS_Class_Methods[];\ | 288 static JSMethodSpec JS_Class_Methods[];\ |
316 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 289 static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |
317 static const wchar_t* m_pClassName;\ | 290 static const wchar_t* m_pClassName;\ |
318 static void queryprop_##js_class_name##_static(JS_PROPQUERY_ARGS);\ | 291 static void queryprop_##js_class_name##_static(JS_PROPQUERY_ARGS);\ |
319 static void getprop_##js_class_name##_static(JS_NAMED_PROPGET_ARGS);\ | 292 static void getprop_##js_class_name##_static(JS_NAMED_PROPGET_ARGS);\ |
320 static void putprop_##js_class_name##_static(JS_NAMED_PROPPUT_ARGS);\ | 293 static void putprop_##js_class_name##_static(JS_NAMED_PROPPUT_ARGS);\ |
321 static void delprop_##js_class_name##_static(JS_PROPDEL_ARGS) | 294 static void delprop_##js_class_name##_static(JS_PROPDEL_ARGS) |
322 | 295 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
1; k<szk; k++)\ | 452 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
1; k<szk; k++)\ |
480 {\ | 453 {\ |
481 if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
hods[k].pName,JS_Class_Methods[k].pMethodCall,JS_Class_Methods[k].nParamNum)<0)r
eturn -1;\ | 454 if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
hods[k].pName,JS_Class_Methods[k].pMethodCall,JS_Class_Methods[k].nParamNum)<0)r
eturn -1;\ |
482 }\ | 455 }\ |
483 if (JS_DefineObjAllProperties(pRuntime, nObjDefnID, js_class_nam
e::queryprop_##js_class_name##_static, js_class_name::getprop_##js_class_name##_
static,js_class_name::putprop_##js_class_name##_static,js_class_name::delprop_##
js_class_name##_static)<0) return -1;\ | 456 if (JS_DefineObjAllProperties(pRuntime, nObjDefnID, js_class_nam
e::queryprop_##js_class_name##_static, js_class_name::getprop_##js_class_name##_
static,js_class_name::putprop_##js_class_name##_static,js_class_name::delprop_##
js_class_name##_static)<0) return -1;\ |
484 \ | 457 \ |
485 return nObjDefnID;\ | 458 return nObjDefnID;\ |
486 }\ | 459 }\ |
487 \ | 460 \ |
488 return -1;\ | 461 return -1;\ |
489 }\ | |
490 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ | |
491 {\ | |
492 pConsts = JS_Class_Consts;\ | |
493 nSize = sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;\ | |
494 }\ | |
495 void js_class_name::GetProperties(JSPropertySpec*& pProperties, int& nSize)\ | |
496 {\ | |
497 pProperties = JS_Class_Properties;\ | |
498 nSize = sizeof(JS_Class_Properties)/sizeof(JSPropertySpec)-1;\ | |
499 }\ | |
500 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\ | |
501 {\ | |
502 pMethods = JS_Class_Methods;\ | |
503 nSize = sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-1;\ | |
504 } | 462 } |
505 | 463 |
506 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\ | 464 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\ |
507 static void method_name##_static(const v8::FunctionCallbackInfo<v8::Valu
e>& info)\ | 465 static void method_name##_static(const v8::FunctionCallbackInfo<v8::Valu
e>& info)\ |
508 {\ | 466 {\ |
509 v8::Isolate* isolate = info.GetIsolate();\ | 467 v8::Isolate* isolate = info.GetIsolate();\ |
510 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ | 468 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ |
511 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)isolate->GetData(2);\ | 469 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)isolate->GetData(2);\ |
512 if (pRuntime == NULL) return;\ | 470 if (pRuntime == NULL) return;\ |
513 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ | 471 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 #define VALUE_NAME_NULL L"null" | 579 #define VALUE_NAME_NULL L"null" |
622 #define VALUE_NAME_UNDEFINED L"undefined" | 580 #define VALUE_NAME_UNDEFINED L"undefined" |
623 | 581 |
624 #define CLASSNAME_ARRAY L"Array" | 582 #define CLASSNAME_ARRAY L"Array" |
625 #define CLASSNAME_DATE L"Date" | 583 #define CLASSNAME_DATE L"Date" |
626 #define CLASSNAME_STRING L"v8::String" | 584 #define CLASSNAME_STRING L"v8::String" |
627 | 585 |
628 FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p); | 586 FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p); |
629 | 587 |
630 #endif //_JS_DEFINE_H_ | 588 #endif //_JS_DEFINE_H_ |
OLD | NEW |