20 #ifndef INCLUDED_JSCONVERSIONS
21 #define INCLUDED_JSCONVERSIONS
36 template<
typename T>
T*
ToNative( JSContext* cx, JSObject* obj )
38 return( (
T*)JS_GetInstancePrivate( cx, obj, &
T::JSI_class, NULL ) );
41 template<
typename T> JSObject*
ToScript(
T* Native )
44 return( (JSObject*)NULL );
45 return( Native->GetScript() );
50 if( !JSVAL_IS_OBJECT( v ) )
return( NULL );
51 if( v == JSVAL_NULL )
return( NULL );
52 return( ToNative<T>(
g_ScriptingHost.GetContext(), JSVAL_TO_OBJECT( v ) ) );
57 T* Native = ToNative<T>( v );
58 if( !Native )
return(
false );
66 T* Native = ToNative<T>( v );
67 if( !Native )
return(
false );
73 template<
typename T>
inline T ToPrimitive( JSContext* cx, jsval v )
87 template<
typename T> jsval
ToJSVal(
T& Native )
89 return( OBJECT_TO_JSVAL( ToScript<T>( &Native ) ) );
92 template<
typename T> jsval
ToJSVal(
T*& Native )
94 return( OBJECT_TO_JSVAL( ToScript<T>( Native ) ) );
97 template<
typename T> jsval
ToJSVal(
const T& Native );
148 template<>
bool ToPrimitive<size_t>( JSContext* cx, jsval v,
size_t& Storage );
149 template<> jsval ToJSVal<size_t>(
const size_t& Native );
150 template<> jsval ToJSVal<size_t>(
size_t& Native );
153 template<>
bool ToPrimitive<ssize_t>( JSContext* cx, jsval v,
ssize_t& Storage );
154 template<> jsval ToJSVal<ssize_t>(
const ssize_t& Native );
155 template<> jsval ToJSVal<ssize_t>(
ssize_t& Native );
bool ToPrimitive< long >(JSContext *cx, jsval v, long &Storage)
jsval ToJSVal< float >(const float &Native)
bool ToPrimitive< CStrW >(JSContext *cx, jsval v, CStrW &Storage)
jsval ToJSVal< double >(const double &Native)
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
jsval ToJSVal< CObjectEntry >(CObjectEntry *&Native)
bool ToPrimitive< CStr8 >(JSContext *cx, jsval v, CStr8 &Storage)
jsval ToJSVal< CScriptObject >(CScriptObject &Native)
bool ToPrimitive< unsigned >(JSContext *cx, jsval v, unsigned &Storage)
jsval ToJSVal< CVector3D >(const CVector3D &Native)
JSObject * ToScript< CVector3D >(CVector3D *Native)
bool ToPrimitive< bool >(JSContext *cx, jsval v, bool &Storage)
bool ToPrimitive< unsigned long >(JSContext *cx, jsval v, unsigned long &Storage)
jsval ToJSVal< long >(const long &Native)
JSObject * ToScript(T *Native)
bool ToPrimitive< CObjectEntry >(JSContext *cx, jsval v, CObjectEntry *&Storage)
bool ToPrimitive< double >(JSContext *cx, jsval v, double &Storage)
jsval ToJSVal< unsigned long >(const unsigned long &Native)
jsval ToJSVal< int >(const int &Native)
jsval ToJSVal< CStrW >(const CStrW &Native)
bool ToPrimitive(JSContext *cx, jsval v, T &Storage)
CVector3D * ToNative< CVector3D >(JSContext *cx, JSObject *obj)
#define T(string_literal)
jsval ToJSVal< CStr8 >(const CStr8 &Native)
T * ToNative(JSContext *cx, JSObject *obj)
bool ToPrimitive< int >(JSContext *cx, jsval v, int &Storage)
jsval ToJSVal< bool >(const bool &Native)
bool ToPrimitive< float >(JSContext *cx, jsval v, float &Storage)
jsval ToJSVal< unsigned >(const unsigned &Native)
bool ToPrimitive< CScriptObject >(JSContext *cx, jsval v, CScriptObject &Storage)