summaryrefslogtreecommitdiff
path: root/fpdfsdk/include/javascript/JS_Value.h
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/include/javascript/JS_Value.h')
-rw-r--r--fpdfsdk/include/javascript/JS_Value.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/fpdfsdk/include/javascript/JS_Value.h b/fpdfsdk/include/javascript/JS_Value.h
new file mode 100644
index 0000000000..f87f9e1d43
--- /dev/null
+++ b/fpdfsdk/include/javascript/JS_Value.h
@@ -0,0 +1,186 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef _JS_VALUE_H_
+#define _JS_VALUE_H_
+
+class CJS_Array;
+class CJS_Date;
+
+class CJS_Value
+{
+public:
+ CJS_Value(v8::Isolate* isolate);
+ CJS_Value(v8::Isolate* isolate, v8::Handle<v8::Value> pValue,FXJSVALUETYPE t);
+ CJS_Value(v8::Isolate* isolate, const int &iValue);
+ CJS_Value(v8::Isolate* isolate, const double &dValue);
+ CJS_Value(v8::Isolate* isolate, const float &fValue);
+ CJS_Value(v8::Isolate* isolate, const bool &bValue);
+ CJS_Value(v8::Isolate* isolate, JSFXObject);
+ CJS_Value(v8::Isolate* isolate, CJS_Object *);
+ CJS_Value(v8::Isolate* isolate, FX_LPCSTR pStr);
+ CJS_Value(v8::Isolate* isolate, FX_LPCWSTR pWstr);
+ CJS_Value(v8::Isolate* isolate, CJS_Array& array);
+
+ ~CJS_Value();
+
+ void SetNull();
+ void Attach(v8::Handle<v8::Value> pValue,FXJSVALUETYPE t);
+ void Attach(CJS_Value *pValue);
+ void Detach();
+
+
+ operator int() const;
+ operator bool() const;
+ operator double() const;
+ operator float() const;
+ operator CJS_Object *() const;
+ //operator JSFXObject *() const;
+ operator v8::Handle<v8::Object>() const;
+ operator v8::Handle<v8::Array>() const;
+ operator CFX_WideString() const;
+ //operator FX_WCHAR *() const;
+ operator CFX_ByteString() const;
+ v8::Handle<v8::Value> ToJSValue();
+
+ void operator = (int iValue);
+ void operator = (bool bValue);
+ void operator = (double);
+ void operator = (float);
+ void operator = (CJS_Object *);
+ void operator = (v8::Handle<v8::Object>);
+// void operator = (JSObject *);
+ void operator = (CJS_Array &);
+ void operator = (CJS_Date &);
+ void operator = (FX_LPCWSTR pWstr);
+ void operator = (FX_LPCSTR pStr);
+ void operator = (CJS_Value value);
+
+ FX_BOOL IsArrayObject() const;
+ FX_BOOL IsDateObject() const;
+ FXJSVALUETYPE GetType() const;
+
+ FX_BOOL ConvertToArray(CJS_Array &) const;
+ FX_BOOL ConvertToDate(CJS_Date &) const;
+
+ v8::Isolate* GetIsolate() {return m_isolate;}
+protected:
+ v8::Handle<v8::Value> m_pValue;
+ FXJSVALUETYPE m_eType;
+ v8::Isolate* m_isolate;
+};
+
+template<class TYPE> class CJS_ParametersTmpl : public CFX_ArrayTemplate<TYPE>
+{
+public:
+ void push_back(TYPE newElement){CFX_ArrayTemplate<TYPE>::Add(newElement);}
+ int size() const{return CFX_ArrayTemplate<TYPE>::GetSize();}
+};
+typedef CJS_ParametersTmpl<CJS_Value> CJS_Parameters;
+
+class CJS_PropValue: public CJS_Value
+{
+public:
+ CJS_PropValue(const CJS_Value &);
+ CJS_PropValue(v8::Isolate* isolate);
+ ~CJS_PropValue();
+public:
+ FX_BOOL IsSetting();
+ FX_BOOL IsGetting();
+ void operator<<(int );
+ void operator>>(int &) const;
+ void operator<<(bool);
+ void operator>>(bool &) const;
+ void operator<<(double );
+ void operator>>(double &) const;
+ void operator<<(CJS_Object *pObj);
+ void operator>>(CJS_Object *&ppObj) const;
+ void operator<<(CFX_ByteString);
+ void operator>>(CFX_ByteString &) const;
+ void operator<<(CFX_WideString);
+ void operator>>(CFX_WideString &) const;
+ void operator<<(FX_LPCWSTR c_string);
+
+ void operator<<(JSFXObject);
+ void operator>>(JSFXObject &) const;
+
+ void operator>>(CJS_Array &array) const;
+ void operator<<(CJS_Array &array);
+
+ void operator<<(CJS_Date &date);
+ void operator>>(CJS_Date &date) const;
+
+ operator v8::Handle<v8::Value>() const;
+
+ void StartSetting();
+ void StartGetting();
+private:
+ FX_BOOL m_bIsSetting;
+};
+
+class CJS_Array
+{
+public:
+ CJS_Array(v8::Isolate* isolate);
+ virtual ~CJS_Array();
+
+ void Attach(v8::Handle<v8::Array> pArray);
+ void GetElement(unsigned index,CJS_Value &value);
+ void SetElement(unsigned index,CJS_Value value);
+ int GetLength();
+ FX_BOOL IsAttached();
+ operator v8::Handle<v8::Array>();
+
+ v8::Isolate* GetIsolate() {return m_isolate;}
+private:
+ v8::Handle<v8::Array> m_pArray;
+ v8::Isolate* m_isolate;
+};
+
+class CJS_Date
+{
+friend class CJS_Value;
+public:
+ CJS_Date(v8::Isolate* isolate);
+ CJS_Date(v8::Isolate* isolate,double dMsec_time);
+ CJS_Date(v8::Isolate* isolate,int year, int mon, int day,int hour, int min, int sec);
+ virtual ~CJS_Date();
+ void Attach(v8::Handle<v8::Value> pDate);
+
+ int GetYear();
+ void SetYear(int iYear);
+
+ int GetMonth();
+ void SetMonth(int iMonth);
+
+ int GetDay();
+ void SetDay(int iDay);
+
+ int GetHours();
+ void SetHours(int iHours);
+
+ int GetMinutes();
+ void SetMinutes(int minutes);
+
+ int GetSeconds();
+ void SetSeconds(int seconds);
+
+ operator v8::Handle<v8::Value>();
+ operator double() const;
+
+ CFX_WideString ToString() const;
+
+ static double MakeDate(int year, int mon, int mday,int hour, int min, int sec,int ms);
+
+ FX_BOOL IsValidDate();
+
+protected:
+ v8::Handle<v8::Value> m_pDate;
+ v8::Isolate* m_isolate;
+};
+
+#endif //_JS_VALUE_H_
+