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 FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ | 7 #ifndef FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ |
8 #define FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ | 8 #define FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ |
9 | 9 |
10 #include "../jsapi/fxjs_v8.h" | 10 #include "../jsapi/fxjs_v8.h" |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 void js_class_name::JSDestructor(v8::Local<v8::Object> obj) { \ | 219 void js_class_name::JSDestructor(v8::Local<v8::Object> obj) { \ |
220 js_class_name* pObj = (js_class_name*)FXJS_GetPrivate(NULL, obj); \ | 220 js_class_name* pObj = (js_class_name*)FXJS_GetPrivate(NULL, obj); \ |
221 pObj->ExitInstance(); \ | 221 pObj->ExitInstance(); \ |
222 delete pObj; \ | 222 delete pObj; \ |
223 } \ | 223 } \ |
224 \ | 224 \ |
225 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ | 225 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ |
226 FXJSOBJTYPE eObjType) { \ | 226 FXJSOBJTYPE eObjType) { \ |
227 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ | 227 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ |
228 eObjType, JSConstructor, JSDestructor); \ | 228 eObjType, JSConstructor, JSDestructor); \ |
229 for (int i = 0; i < FX_ArraySize(JS_Class_Properties) - 1; ++i) { \ | 229 for (size_t i = 0; i < FX_ArraySize(JS_Class_Properties) - 1; ++i) { \ |
230 FXJS_DefineObjProperty( \ | 230 FXJS_DefineObjProperty( \ |
231 pIsolate, nObjDefnID, JS_Class_Properties[i].pName, \ | 231 pIsolate, nObjDefnID, JS_Class_Properties[i].pName, \ |
232 JS_Class_Properties[i].pPropGet, JS_Class_Properties[i].pPropPut); \ | 232 JS_Class_Properties[i].pPropGet, JS_Class_Properties[i].pPropPut); \ |
233 } \ | 233 } \ |
234 for (int i = 0; i < FX_ArraySize(JS_Class_Methods) - 1; ++i) { \ | 234 for (size_t i = 0; i < FX_ArraySize(JS_Class_Methods) - 1; ++i) { \ |
235 FXJS_DefineObjMethod(pIsolate, nObjDefnID, JS_Class_Methods[i].pName, \ | 235 FXJS_DefineObjMethod(pIsolate, nObjDefnID, JS_Class_Methods[i].pName, \ |
236 JS_Class_Methods[i].pMethodCall); \ | 236 JS_Class_Methods[i].pMethodCall); \ |
237 } \ | 237 } \ |
238 } | 238 } |
239 | 239 |
240 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) \ | 240 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) \ |
241 IMPLEMENT_JS_CLASS_RICH(js_class_name, class_name, class_name) | 241 IMPLEMENT_JS_CLASS_RICH(js_class_name, class_name, class_name) |
242 | 242 |
243 /* ======================================== CONST CLASS | 243 /* ======================================== CONST CLASS |
244 * ============================================ */ | 244 * ============================================ */ |
245 | 245 |
246 #define DECLARE_JS_CLASS_CONST() \ | 246 #define DECLARE_JS_CLASS_CONST() \ |
247 static void DefineJSObjects(v8::Isolate* pIsolate, FXJSOBJTYPE eObjType); \ | 247 static void DefineJSObjects(v8::Isolate* pIsolate, FXJSOBJTYPE eObjType); \ |
248 static JSConstSpec JS_Class_Consts[]; \ | 248 static JSConstSpec JS_Class_Consts[]; \ |
249 static const wchar_t* m_pClassName | 249 static const wchar_t* m_pClassName |
250 | 250 |
251 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ | 251 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ |
252 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name); \ | 252 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name); \ |
253 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ | 253 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ |
254 FXJSOBJTYPE eObjType) { \ | 254 FXJSOBJTYPE eObjType) { \ |
255 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ | 255 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ |
256 eObjType, NULL, NULL); \ | 256 eObjType, NULL, NULL); \ |
257 for (int i = 0; i < FX_ArraySize(JS_Class_Consts) - 1; ++i) { \ | 257 for (size_t i = 0; i < FX_ArraySize(JS_Class_Consts) - 1; ++i) { \ |
258 FXJS_DefineObjConst( \ | 258 FXJS_DefineObjConst( \ |
259 pIsolate, nObjDefnID, JS_Class_Consts[i].pName, \ | 259 pIsolate, nObjDefnID, JS_Class_Consts[i].pName, \ |
260 JS_Class_Consts[i].t == 0 \ | 260 JS_Class_Consts[i].t == 0 \ |
261 ? FXJS_NewNumber(pIsolate, JS_Class_Consts[i].number) \ | 261 ? FXJS_NewNumber(pIsolate, JS_Class_Consts[i].number) \ |
262 : FXJS_NewString(pIsolate, JS_Class_Consts[i].string)); \ | 262 : FXJS_NewString(pIsolate, JS_Class_Consts[i].string)); \ |
263 } \ | 263 } \ |
264 } | 264 } |
265 | 265 |
266 /* ===================================== SPECIAL JS CLASS | 266 /* ===================================== SPECIAL JS CLASS |
267 * =============================================== */ | 267 * =============================================== */ |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 js_class_name* pObj = (js_class_name*)FXJS_GetPrivate(NULL, obj); \ | 419 js_class_name* pObj = (js_class_name*)FXJS_GetPrivate(NULL, obj); \ |
420 ASSERT(pObj != NULL); \ | 420 ASSERT(pObj != NULL); \ |
421 pObj->ExitInstance(); \ | 421 pObj->ExitInstance(); \ |
422 delete pObj; \ | 422 delete pObj; \ |
423 } \ | 423 } \ |
424 \ | 424 \ |
425 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ | 425 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate, \ |
426 FXJSOBJTYPE eObjType) { \ | 426 FXJSOBJTYPE eObjType) { \ |
427 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ | 427 int nObjDefnID = FXJS_DefineObj(pIsolate, js_class_name::m_pClassName, \ |
428 eObjType, JSConstructor, JSDestructor); \ | 428 eObjType, JSConstructor, JSDestructor); \ |
429 for (int i = 0; i < FX_ArraySize(JS_Class_Properties) - 1; ++i) { \ | 429 for (size_t i = 0; i < FX_ArraySize(JS_Class_Properties) - 1; ++i) { \ |
430 FXJS_DefineObjProperty( \ | 430 FXJS_DefineObjProperty( \ |
431 pIsolate, nObjDefnID, JS_Class_Properties[i].pName, \ | 431 pIsolate, nObjDefnID, JS_Class_Properties[i].pName, \ |
432 JS_Class_Properties[i].pPropGet, JS_Class_Properties[i].pPropPut); \ | 432 JS_Class_Properties[i].pPropGet, JS_Class_Properties[i].pPropPut); \ |
433 } \ | 433 } \ |
434 \ | 434 \ |
435 for (int i = 0; i < FX_ArraySize(JS_Class_Methods) - 1; ++i) { \ | 435 for (size_t i = 0; i < FX_ArraySize(JS_Class_Methods) - 1; ++i) { \ |
436 FXJS_DefineObjMethod(pIsolate, nObjDefnID, JS_Class_Methods[i].pName, \ | 436 FXJS_DefineObjMethod(pIsolate, nObjDefnID, JS_Class_Methods[i].pName, \ |
437 JS_Class_Methods[i].pMethodCall); \ | 437 JS_Class_Methods[i].pMethodCall); \ |
438 } \ | 438 } \ |
439 FXJS_DefineObjAllProperties( \ | 439 FXJS_DefineObjAllProperties( \ |
440 pIsolate, nObjDefnID, \ | 440 pIsolate, nObjDefnID, \ |
441 js_class_name::queryprop_##js_class_name##_static, \ | 441 js_class_name::queryprop_##js_class_name##_static, \ |
442 js_class_name::getprop_##js_class_name##_static, \ | 442 js_class_name::getprop_##js_class_name##_static, \ |
443 js_class_name::putprop_##js_class_name##_static, \ | 443 js_class_name::putprop_##js_class_name##_static, \ |
444 js_class_name::delprop_##js_class_name##_static); \ | 444 js_class_name::delprop_##js_class_name##_static); \ |
445 } | 445 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 | 486 |
487 #define BEGIN_JS_STATIC_GLOBAL_FUN(js_class_name) \ | 487 #define BEGIN_JS_STATIC_GLOBAL_FUN(js_class_name) \ |
488 JSMethodSpec js_class_name::global_methods[] = { | 488 JSMethodSpec js_class_name::global_methods[] = { |
489 #define JS_STATIC_GLOBAL_FUN_ENTRY(method_name) \ | 489 #define JS_STATIC_GLOBAL_FUN_ENTRY(method_name) \ |
490 JS_STATIC_METHOD_ENTRY(method_name) | 490 JS_STATIC_METHOD_ENTRY(method_name) |
491 | 491 |
492 #define END_JS_STATIC_GLOBAL_FUN() END_JS_STATIC_METHOD() | 492 #define END_JS_STATIC_GLOBAL_FUN() END_JS_STATIC_METHOD() |
493 | 493 |
494 #define IMPLEMENT_JS_STATIC_GLOBAL_FUN(js_class_name) \ | 494 #define IMPLEMENT_JS_STATIC_GLOBAL_FUN(js_class_name) \ |
495 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate) { \ | 495 void js_class_name::DefineJSObjects(v8::Isolate* pIsolate) { \ |
496 for (int i = 0; i < FX_ArraySize(global_methods) - 1; ++i) { \ | 496 for (size_t i = 0; i < FX_ArraySize(global_methods) - 1; ++i) { \ |
497 FXJS_DefineGlobalMethod(pIsolate, \ | 497 FXJS_DefineGlobalMethod(pIsolate, \ |
498 js_class_name::global_methods[i].pName, \ | 498 js_class_name::global_methods[i].pName, \ |
499 js_class_name::global_methods[i].pMethodCall); \ | 499 js_class_name::global_methods[i].pMethodCall); \ |
500 } \ | 500 } \ |
501 } | 501 } |
502 | 502 |
503 CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p); | 503 CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p); |
504 | 504 |
505 #endif // FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ | 505 #endif // FPDFSDK_INCLUDE_JAVASCRIPT_JS_DEFINE_H_ |
OLD | NEW |