jsb_pluginx_basic_conversions.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef __JS_BASIC_CONVERSIONS_H__
  2. #define __JS_BASIC_CONVERSIONS_H__
  3. #include "jsapi.h"
  4. #include "jsfriendapi.h"
  5. #include "ProtocolIAP.h"
  6. #include "ProtocolAnalytics.h"
  7. #include "ProtocolAds.h"
  8. #include "ProtocolShare.h"
  9. #include "ProtocolSocial.h"
  10. #include "ProtocolUser.h"
  11. #ifndef CCLOGINFO
  12. #define CCLOGINFO(...)
  13. #endif
  14. using namespace cocos2d::plugin;
  15. namespace pluginx {
  16. // to native
  17. bool jsval_to_int32( JSContext *cx, JS::HandleValue vp, int32_t *ret );
  18. bool jsval_to_uint32( JSContext *cx, JS::HandleValue vp, uint32_t *ret );
  19. bool jsval_to_uint16( JSContext *cx, JS::HandleValue vp, uint16_t *ret );
  20. bool jsval_to_long(JSContext *cx, JS::HandleValue v, long* ret);
  21. bool jsval_to_long_long(JSContext *cx, JS::HandleValue v, long long* ret);
  22. bool jsval_to_std_string(JSContext *cx, JS::HandleValue v, std::string* ret);
  23. bool jsval_to_TProductInfo(JSContext *cx, JS::HandleValue v, TProductInfo* ret);
  24. bool jsval_to_TIAPDeveloperInfo(JSContext *cx, JS::HandleValue v, TIAPDeveloperInfo* ret);
  25. bool jsval_to_TAdsDeveloperInfo(JSContext *cx, JS::HandleValue v, TAdsDeveloperInfo* ret);
  26. bool jsval_to_TAdsInfo(JSContext *cx, JS::HandleValue v, TAdsInfo* ret);
  27. bool jsval_to_TShareDeveloperInfo(JSContext *cx, JS::HandleValue v, TShareDeveloperInfo* ret);
  28. bool jsval_to_TShareInfo(JSContext *cx, JS::HandleValue v, TShareInfo* ret);
  29. bool jsval_to_TSocialDeveloperInfo(JSContext *cx, JS::HandleValue v, TSocialDeveloperInfo* ret);
  30. bool jsval_to_TAchievementInfo(JSContext *cx, JS::HandleValue v, TAchievementInfo* ret);
  31. bool jsval_to_TPaymentInfo(JSContext *cx, JS::HandleValue v, std::map<std::string, std::string>* ret);
  32. bool jsval_to_TUserDeveloperInfo(JSContext *cx, JS::HandleValue v, TUserDeveloperInfo* ret);
  33. bool jsval_to_LogEventParamMap(JSContext *cx, JS::HandleValue v, LogEventParamMap** ret);
  34. bool jsval_to_StringMap(JSContext *cx, JS::HandleValue v, StringMap* ret);
  35. bool jsval_to_FBInfo(JSContext *cx, JS::HandleValue v, StringMap* ret);
  36. bool jsval_array_to_string(JSContext *cx, JS::HandleValue v, std::string* ret);
  37. bool jsval_to_std_map_string_string(JSContext *cx, JS::HandleValue v, std::map<std::string, std::string>* ret);
  38. // from native
  39. jsval int32_to_jsval( JSContext *cx, int32_t l);
  40. jsval uint32_to_jsval( JSContext *cx, uint32_t number );
  41. jsval long_long_to_jsval(JSContext* cx, long long v);
  42. jsval long_to_jsval(JSContext* cx, long v);
  43. jsval std_string_to_jsval(JSContext* cx, const std::string& v);
  44. jsval c_string_to_jsval(JSContext* cx, const char* v, size_t length = -1);
  45. jsval TProductInfo_to_jsval(JSContext *cx, TProductInfo& ret);
  46. jsval TProductList_to_jsval(JSContext *cx, TProductList ret);
  47. jsval LogEventParamMap_to_jsval(JSContext *cx, LogEventParamMap*& ret);
  48. // wraps a function and "this" object
  49. class JSFunctionWrapper
  50. {
  51. public:
  52. JSFunctionWrapper(JSContext* cx, JSObject *jsthis, jsval fval);
  53. ~JSFunctionWrapper();
  54. bool invoke(unsigned int argc, jsval *argv, JS::MutableHandleValue rval);
  55. private:
  56. JSContext *_cx;
  57. JS::Heap<JSObject*> _jsthis;
  58. JS::Heap<jsval> _fval;
  59. private:
  60. JSFunctionWrapper(const JSFunctionWrapper &);
  61. JSFunctionWrapper& operator=(const JSFunctionWrapper &);
  62. };
  63. } // namespace pluginx {
  64. #endif /* __JS_BASIC_CONVERSIONS_H__ */