| // Copyright 2014 The PDFium Authors | 
 | // 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 FXJS_CJS_PUBLICMETHODS_H_ | 
 | #define FXJS_CJS_PUBLICMETHODS_H_ | 
 |  | 
 | #include <vector> | 
 |  | 
 | #include "fxjs/cjs_object.h" | 
 | #include "fxjs/cjs_result.h" | 
 |  | 
 | class CJS_PublicMethods final : public CJS_Object { | 
 |  public: | 
 |   CJS_PublicMethods() = delete; | 
 |  | 
 |   static void DefineJSObjects(CFXJS_Engine* pEngine); | 
 |  | 
 |   static double ParseDate(v8::Isolate* isolate, | 
 |                           const WideString& value, | 
 |                           bool* bWrongFormat); | 
 |   static double ParseDateAsGMT(v8::Isolate* isolate, const WideString& value); | 
 |   static double ParseDateUsingFormat(v8::Isolate* isolate, | 
 |                                      const WideString& value, | 
 |                                      const WideString& format, | 
 |                                      bool* bWrongFormat); | 
 |  | 
 |   // Exposed for testing. | 
 |   static WideString PrintDateUsingFormat(double dDate, | 
 |                                          const WideString& format); | 
 |   static bool IsNumber(const WideString& str); | 
 |  | 
 |   static CJS_Result AFNumber_Format( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFNumber_Keystroke( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFPercent_Format( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFPercent_Keystroke( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFDate_FormatEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFDate_KeystrokeEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFDate_Format( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFDate_Keystroke( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFTime_FormatEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFTime_KeystrokeEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFTime_Format( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFTime_Keystroke( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFSpecial_Format( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFSpecial_Keystroke( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFSpecial_KeystrokeEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFSimple(CJS_Runtime* pRuntime, | 
 |                              const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFMakeNumber( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFSimple_Calculate( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFRange_Validate( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFMergeChange( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFParseDateEx( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |   static CJS_Result AFExtractNums( | 
 |       CJS_Runtime* pRuntime, | 
 |       const std::vector<v8::Local<v8::Value>>& params); | 
 |  | 
 |   static void AFNumber_Format_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFNumber_Keystroke_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFPercent_Format_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFPercent_Keystroke_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFDate_FormatEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFDate_KeystrokeEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFDate_Format_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFDate_Keystroke_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFTime_FormatEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFTime_KeystrokeEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFTime_Format_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFTime_Keystroke_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFSpecial_Format_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFSpecial_Keystroke_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFSpecial_KeystrokeEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFSimple_static(const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFMakeNumber_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFSimple_Calculate_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFRange_Validate_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFMergeChange_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFParseDateEx_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |   static void AFExtractNums_static( | 
 |       const v8::FunctionCallbackInfo<v8::Value>& info); | 
 |  | 
 |   static bool MaskSatisfied(wchar_t c_Change, wchar_t c_Mask); | 
 |   static bool IsReservedMaskChar(wchar_t ch); | 
 |   static v8::Local<v8::Array> AF_MakeArrayFromList(CJS_Runtime* pRuntime, | 
 |                                                    v8::Local<v8::Value> val); | 
 |  | 
 |  private: | 
 |   static const JSMethodSpec GlobalFunctionSpecs[]; | 
 | }; | 
 |  | 
 | #endif  // FXJS_CJS_PUBLICMETHODS_H_ |