Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Side by Side Diff: fpdfsdk/include/javascript/JS_Define.h

Issue 927263003: Tidy up JS_Defines.h (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/include/javascript/Icon.h ('k') | fpdfsdk/include/javascript/PublicMethods.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 28 matching lines...) Expand all
39 #define JS_TRUE (unsigned)1 39 #define JS_TRUE (unsigned)1
40 #define JS_FALSE (unsigned)0 40 #define JS_FALSE (unsigned)0
41 41
42 42
43 #define CJS_PointsArray CFX_ArrayTemplate<float> 43 #define CJS_PointsArray CFX_ArrayTemplate<float>
44 #define CJS_IntArray CFX_ArrayTemplate<int> 44 #define CJS_IntArray CFX_ArrayTemplate<int>
45 45
46 /* ====================================== PUBLIC DEFINE SPEC =================== =========================== */ 46 /* ====================================== PUBLIC DEFINE SPEC =================== =========================== */
47 #define JS_WIDESTRING(widestring) L###widestring 47 #define JS_WIDESTRING(widestring) L###widestring
48 48
49 #define OBJ_PROP_PARAMS IFXJS_Context* cc, CJS_PropValue& vp, JS _ErrorString& sError
50 #define OBJ_METHOD_PARAMS IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError
51 #define BEGIN_JS_STATIC_CONST(js_class_name) JSConstSpec js_class_name::JS_Class _Consts[] = { 49 #define BEGIN_JS_STATIC_CONST(js_class_name) JSConstSpec js_class_name::JS_Class _Consts[] = {
52 #define JS_STATIC_CONST_ENTRY_NUMBER(const_name, pValue) {JS_WIDESTRING(const_na me), pValue, L"", 0}, 50 #define JS_STATIC_CONST_ENTRY_NUMBER(const_name, pValue) {JS_WIDESTRING(const_na me), pValue, L"", 0},
53 #define JS_STATIC_CONST_ENTRY_STRING(const_name, pValue) {JS_WIDESTRING(const_na me), 0, JS_WIDESTRING(pValue), 1}, 51 #define JS_STATIC_CONST_ENTRY_STRING(const_name, pValue) {JS_WIDESTRING(const_na me), 0, JS_WIDESTRING(pValue), 1},
54 #define END_JS_STATIC_CONST() {0, 0, 0, 0}}; 52 #define END_JS_STATIC_CONST() {0, 0, 0, 0}};
55 53
56 #define BEGIN_JS_STATIC_PROP(js_class_name) JSPropertySpec js_class_name::JS_Cla ss_Properties[] = { 54 #define BEGIN_JS_STATIC_PROP(js_class_name) JSPropertySpec js_class_name::JS_Cla ss_Properties[] = {
57 #define JS_STATIC_PROP_ENTRY(prop_name) {JS_WIDESTRING(prop_name), get_##prop_na me##_static, set_##prop_name##_static}, 55 #define JS_STATIC_PROP_ENTRY(prop_name) {JS_WIDESTRING(prop_name), get_##prop_na me##_static, set_##prop_name##_static},
58 #define END_JS_STATIC_PROP() {0, 0, 0}}; 56 #define END_JS_STATIC_PROP() {0, 0, 0}};
59 57
60 #define BEGIN_JS_STATIC_METHOD(js_class_name) JSMethodSpec js_class_name::JS_Cla ss_Methods[] = { 58 #define BEGIN_JS_STATIC_METHOD(js_class_name) JSMethodSpec js_class_name::JS_Cla ss_Methods[] = {
(...skipping 21 matching lines...) Expand all
82 } 80 }
83 #else 81 #else
84 #define MEMLEAKCHECK_1() ((void)0) 82 #define MEMLEAKCHECK_1() ((void)0)
85 #define MEMLEAKCHECK_2(main_name,sub_name) ((void)0) 83 #define MEMLEAKCHECK_2(main_name,sub_name) ((void)0)
86 #endif 84 #endif
87 */ 85 */
88 86
89 /* ======================================== PROP CALLBACK ====================== ====================== */ 87 /* ======================================== PROP CALLBACK ====================== ====================== */
90 88
91 #define JS_STATIC_PROP_GET(prop_name, class_name)\ 89 #define JS_STATIC_PROP_GET(prop_name, class_name)\
92 » static void get_##prop_name##_static(JS_PROPGET_ARGS)\ 90 static void get_##prop_name##_static(v8::Local<v8::String> property, \
91 const v8::PropertyCallbackInfo<v8::Value> & info) \
93 {\ 92 {\
94 v8::Isolate* isolate = info.GetIsolate();\ 93 v8::Isolate* isolate = info.GetIsolate();\
95 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ 94 v8::Local<v8::Context> context = isolate->GetCurrentContext();\
96 v8::Local<v8::Value> v = context->GetEmbedderData(1);\ 95 v8::Local<v8::Value> v = context->GetEmbedderData(1);\
97 ASSERT(!v.IsEmpty());\ 96 ASSERT(!v.IsEmpty());\
98 if(v.IsEmpty()) return;\ 97 if(v.IsEmpty()) return;\
99 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\ 98 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\
100 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\ 99 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\
101 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ 100 IFXJS_Context* cc = pRuntime->GetCurrentContext();\
102 CJS_PropValue value(isolate);\ 101 CJS_PropValue value(isolate);\
(...skipping 15 matching lines...) Expand all
118 else\ 117 else\
119 {\ 118 {\
120 CFX_ByteString cbName;\ 119 CFX_ByteString cbName;\
121 cbName.Format("%s.%s", #class_name, #prop_name);\ 120 cbName.Format("%s.%s", #class_name, #prop_name);\
122 JS_Error(NULL,CFX_WideString::FromLocal(cbName), sError);\ 121 JS_Error(NULL,CFX_WideString::FromLocal(cbName), sError);\
123 return ;\ 122 return ;\
124 }\ 123 }\
125 } 124 }
126 125
127 #define JS_STATIC_PROP_SET(prop_name, class_name)\ 126 #define JS_STATIC_PROP_SET(prop_name, class_name)\
128 » static void set_##prop_name##_static(JS_PROPPUT_ARGS)\ 127 static void set_##prop_name##_static(v8::Local<v8::String> property, \
128 v8::Local<v8::Value> value, \
129 const v8::PropertyCallbackInfo<void>& inf o) \
129 {\ 130 {\
130 v8::Isolate* isolate = info.GetIsolate();\ 131 v8::Isolate* isolate = info.GetIsolate();\
131 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ 132 v8::Local<v8::Context> context = isolate->GetCurrentContext();\
132 v8::Local<v8::Value> v = context->GetEmbedderData(1);\ 133 v8::Local<v8::Value> v = context->GetEmbedderData(1);\
133 ASSERT(!v.IsEmpty());\ 134 ASSERT(!v.IsEmpty());\
134 if(v.IsEmpty()) return;\ 135 if(v.IsEmpty()) return;\
135 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\ 136 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\
136 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\ 137 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\
137 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ 138 IFXJS_Context* cc = pRuntime->GetCurrentContext();\
138 CJS_PropValue propValue(CJS_Value(isolate,value,VT_unknown));\ 139 CJS_PropValue propValue(CJS_Value(isolate,value,VT_unknown));\
(...skipping 20 matching lines...) Expand all
159 }\ 160 }\
160 } 161 }
161 162
162 #define JS_STATIC_PROP(prop_name, class_name)\ 163 #define JS_STATIC_PROP(prop_name, class_name)\
163 JS_STATIC_PROP_GET(prop_name, class_name);\ 164 JS_STATIC_PROP_GET(prop_name, class_name);\
164 JS_STATIC_PROP_SET(prop_name, class_name) 165 JS_STATIC_PROP_SET(prop_name, class_name)
165 166
166 /* ========================================= METHOD CALLBACK =================== ======================== */ 167 /* ========================================= METHOD CALLBACK =================== ======================== */
167 168
168 #define JS_STATIC_METHOD(method_name, class_name)\ 169 #define JS_STATIC_METHOD(method_name, class_name)\
169 » static void method_name##_static(JS_METHOD_ARGS)\ 170 static void method_name##_static(const v8::FunctionCallbackInfo<v8::Value>& in fo) \
170 {\ 171 {\
171 v8::Isolate* isolate = info.GetIsolate();\ 172 v8::Isolate* isolate = info.GetIsolate();\
172 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ 173 v8::Local<v8::Context> context = isolate->GetCurrentContext();\
173 v8::Local<v8::Value> v = context->GetEmbedderData(1);\ 174 v8::Local<v8::Value> v = context->GetEmbedderData(1);\
174 ASSERT(!v.IsEmpty());\ 175 ASSERT(!v.IsEmpty());\
175 if(v.IsEmpty()) return;\ 176 if(v.IsEmpty()) return;\
176 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\ 177 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\
177 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\ 178 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\
178 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ 179 IFXJS_Context* cc = pRuntime->GetCurrentContext();\
179 CJS_Parameters parameters;\ 180 CJS_Parameters parameters;\
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 pProperties = JS_Class_Properties;\ 515 pProperties = JS_Class_Properties;\
515 nSize = sizeof(JS_Class_Properties)/sizeof(JSPropertySpec)-1;\ 516 nSize = sizeof(JS_Class_Properties)/sizeof(JSPropertySpec)-1;\
516 }\ 517 }\
517 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\ 518 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\
518 {\ 519 {\
519 pMethods = JS_Class_Methods;\ 520 pMethods = JS_Class_Methods;\
520 nSize = sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-1;\ 521 nSize = sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-1;\
521 } 522 }
522 523
523 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\ 524 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\
524 » static void method_name##_static(JS_METHOD_ARGS)\ 525 » static void method_name##_static(const v8::FunctionCallbackInfo<v8::Valu e>& info)\
525 {\ 526 {\
526 v8::Isolate* isolate = info.GetIsolate();\ 527 v8::Isolate* isolate = info.GetIsolate();\
527 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ 528 v8::Local<v8::Context> context = isolate->GetCurrentContext();\
528 v8::Local<v8::Value> v = context->GetEmbedderData(1);\ 529 v8::Local<v8::Value> v = context->GetEmbedderData(1);\
529 ASSERT(!v.IsEmpty());\ 530 ASSERT(!v.IsEmpty());\
530 if(v.IsEmpty()) return;\ 531 if(v.IsEmpty()) return;\
531 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\ 532 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\
532 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\ 533 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\
533 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ 534 IFXJS_Context* cc = pRuntime->GetCurrentContext();\
534 CJS_Parameters parameters;\ 535 CJS_Parameters parameters;\
(...skipping 22 matching lines...) Expand all
557 cbName.Format("%s.%s", #class_name, #method_name);\ 558 cbName.Format("%s.%s", #class_name, #method_name);\
558 JS_Error(NULL, CFX_WideString::FromLocal(cbName), sError);\ 559 JS_Error(NULL, CFX_WideString::FromLocal(cbName), sError);\
559 return ;\ 560 return ;\
560 }\ 561 }\
561 JS_Error(NULL, JS_WIDESTRING(method_name), L"Embeded object not found!" );\ 562 JS_Error(NULL, JS_WIDESTRING(method_name), L"Embeded object not found!" );\
562 return ;\ 563 return ;\
563 } 564 }
564 565
565 /* ======================================== GLOBAL METHODS ===================== ======================= */ 566 /* ======================================== GLOBAL METHODS ===================== ======================= */
566 #define JS_STATIC_GLOBAL_FUN(fun_name) \ 567 #define JS_STATIC_GLOBAL_FUN(fun_name) \
567 static void fun_name##_static(JS_METHOD_ARGS)\ 568 static void fun_name##_static(const v8::FunctionCallbackInfo<v8::Value>& info)\
568 {\ 569 {\
569 v8::Isolate* isolate = info.GetIsolate();\ 570 v8::Isolate* isolate = info.GetIsolate();\
570 v8::Local<v8::Context> context = isolate->GetCurrentContext();\ 571 v8::Local<v8::Context> context = isolate->GetCurrentContext();\
571 v8::Local<v8::Value> v = context->GetEmbedderData(1);\ 572 v8::Local<v8::Value> v = context->GetEmbedderData(1);\
572 ASSERT(!v.IsEmpty());\ 573 ASSERT(!v.IsEmpty());\
573 if(v.IsEmpty()) return;\ 574 if(v.IsEmpty()) return;\
574 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\ 575 v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(v);\
575 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\ 576 IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)field->Value();\
576 IFXJS_Context* cc = pRuntime->GetCurrentContext();\ 577 IFXJS_Context* cc = pRuntime->GetCurrentContext();\
577 CJS_Parameters parameters;\ 578 CJS_Parameters parameters;\
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 #define VALUE_NAME_DATE L"date" 642 #define VALUE_NAME_DATE L"date"
642 #define VALUE_NAME_OBJECT L"object" 643 #define VALUE_NAME_OBJECT L"object"
643 #define VALUE_NAME_FXOBJ L"fxobj" 644 #define VALUE_NAME_FXOBJ L"fxobj"
644 #define VALUE_NAME_NULL L"null" 645 #define VALUE_NAME_NULL L"null"
645 #define VALUE_NAME_UNDEFINED L"undefined" 646 #define VALUE_NAME_UNDEFINED L"undefined"
646 647
647 #define CLASSNAME_ARRAY L"Array" 648 #define CLASSNAME_ARRAY L"Array"
648 #define CLASSNAME_DATE L"Date" 649 #define CLASSNAME_DATE L"Date"
649 #define CLASSNAME_STRING L"v8::String" 650 #define CLASSNAME_STRING L"v8::String"
650 651
651 extern const unsigned int JSCONST_nStringHash; 652 FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p);
652 extern const unsigned int JSCONST_nNumberHash;
653 extern const unsigned int JSCONST_nBoolHash;
654 extern const unsigned int JSCONST_nDateHash;
655 extern const unsigned int JSCONST_nObjectHash;
656 extern const unsigned int JSCONST_nFXobjHash;
657 extern const unsigned int JSCONST_nNullHash;
658 extern const unsigned int JSCONST_nUndefHash;
659
660 static FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p)
brucedawson 2015/02/17 21:08:02 I wonder why GET_VALUE_TYPE was defined as static
661 {
662
663 » » const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));
664
665 » » if (nHash == JSCONST_nUndefHash)
666 » » » return VT_undefined;
667 » » else if (nHash == JSCONST_nNullHash)
668 » » » return VT_null;
669 » » else if (nHash == JSCONST_nStringHash)
670 » » » return VT_string;
671 » » else if (nHash == JSCONST_nNumberHash)
672 » » » return VT_number;
673 » » else if (nHash == JSCONST_nBoolHash)
674 » » » return VT_boolean;
675 » » else if (nHash == JSCONST_nDateHash)
676 » » » return VT_date;
677 » » else if (nHash == JSCONST_nObjectHash)
678 » » » return VT_object;» »
679 » » else if (nHash == JSCONST_nFXobjHash)
680 » » » return VT_fxobject;
681
682 » » /*
683 » » const char * sType = p->getTypeof()->toDchars();
684 » » if (strcmp(sType,VALUE_NAME_STRING) == 0)
685 » » » return VT_string;
686 » » else if (strcmp(sType,VALUE_NAME_NUMBER) == 0)
687 » » » return VT_number;
688 » » else if (strcmp(sType,VALUE_NAME_BOOLEAN) == 0)
689 » » » return VT_boolean;
690 » » else if (strcmp(sType,VALUE_NAME_DATE) == 0)
691 » » » return VT_date;
692 » » else if (strcmp(sType,VALUE_NAME_OBJECT) == 0)
693 » » » return VT_object;
694 » » else if (strcmp(sType,VALUE_NAME_FXOBJ) == 0)
695 » » » return VT_object;
696 » » else if (strcmp(sType,VALUE_NAME_NULL) == 0)
697 » » » return VT_null;
698 » » else if (strcmp(sType,VALUE_NAME_UNDEFINED) == 0)
699 » » » return VT_undefined;
700 » » » */
701
702 » return VT_unknown;
703 }
704 653
705 #endif //_JS_DEFINE_H_ 654 #endif //_JS_DEFINE_H_
OLDNEW
« no previous file with comments | « fpdfsdk/include/javascript/Icon.h ('k') | fpdfsdk/include/javascript/PublicMethods.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698