Pyrogenesis  trunk
Classes | Macros | Functions
NativeWrapperDecls.h File Reference
#include <boost/preprocessor/punctuation/comma_if.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
Include dependency graph for NativeWrapperDecls.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  MaybeRef< T >
 

Macros

#define NUMBERED_LIST_HEAD(z, i, data)   data##i,
 
#define NUMBERED_LIST_TAIL(z, i, data)   ,data##i
 
#define NUMBERED_LIST_TAIL_MAYBE_REF(z, i, data)   , typename MaybeRef<data##i>::Type
 
#define NUMBERED_LIST_BALANCED(z, i, data)   BOOST_PP_COMMA_IF(i) data##i
 
#define NUMBERED_LIST_BALANCED_MAYBE_REF(z, i, data)   BOOST_PP_COMMA_IF(i) typename MaybeRef<data##i>::Type
 
#define CONVERT_ARG(z, i, data)
 
#define TYPENAME_T0_HEAD(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)
 
#define T0(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
 
#define T0_MAYBE_REF(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED_MAYBE_REF, T)
 
#define T0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
 
#define T0_TAIL_MAYBE_REF(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL_MAYBE_REF, T)
 
#define A0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, a)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 
#define NUMBERED_LIST_HEAD(z, i, data)   data##i,
 
#define NUMBERED_LIST_TAIL(z, i, data)   ,data##i
 
#define NUMBERED_LIST_TAIL_MAYBE_REF(z, i, data)   , typename MaybeRef<data##i>::Type
 
#define NUMBERED_LIST_BALANCED(z, i, data)   BOOST_PP_COMMA_IF(i) data##i
 
#define NUMBERED_LIST_BALANCED_MAYBE_REF(z, i, data)   BOOST_PP_COMMA_IF(i) typename MaybeRef<data##i>::Type
 
#define CONVERT_ARG(z, i, data)
 
#define TYPENAME_T0_HEAD(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)
 
#define T0(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
 
#define T0_MAYBE_REF(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED_MAYBE_REF, T)
 
#define T0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
 
#define T0_TAIL_MAYBE_REF(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL_MAYBE_REF, T)
 
#define A0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, a)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 
#define OVERLOADS(z, i, data)
 

Functions

template<typename... Ts>
static size_t nargs ()
 
template<typename R , typename... Ts>
bool CallFunction (JS::HandleValue val, const char *name, R &ret, const Ts &...params) const
 
template<typename R , typename... Ts>
bool CallFunction (JS::HandleValue val, const char *name, JS::Rooted< R > *ret, const Ts &...params) const
 
template<typename R , typename... Ts>
bool CallFunction (JS::HandleValue val, const char *name, JS::MutableHandle< R > ret, const Ts &...params) const
 
template<typename... Ts>
bool CallFunctionVoid (JS::HandleValue val, const char *name, const Ts &...params) const
 

Macro Definition Documentation

#define A0_TAIL (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, a)
#define A0_TAIL (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, a)
#define CONVERT_ARG (   z,
  i,
  data 
)
Value:
bool typeConvRet##i; \
T##i a##i = ScriptInterface::AssignOrFromJSVal<T##i>( \
cx, \
i < args.length() ? args[i] : JS::UndefinedHandleValue, \
typeConvRet##i); \
if (!typeConvRet##i) return false;
#define T(string_literal)
Definition: secure_crt.cpp:76
#define CONVERT_ARG (   z,
  i,
  data 
)
Value:
bool typeConvRet##i; \
T##i a##i = ScriptInterface::AssignOrFromJSVal<T##i>( \
cx, \
i < args.length() ? args[i] : JS::UndefinedHandleValue, \
typeConvRet##i); \
if (!typeConvRet##i) return false;
#define T(string_literal)
Definition: secure_crt.cpp:76
#define NUMBERED_LIST_BALANCED (   z,
  i,
  data 
)    BOOST_PP_COMMA_IF(i) data##i
#define NUMBERED_LIST_BALANCED (   z,
  i,
  data 
)    BOOST_PP_COMMA_IF(i) data##i
#define NUMBERED_LIST_BALANCED_MAYBE_REF (   z,
  i,
  data 
)    BOOST_PP_COMMA_IF(i) typename MaybeRef<data##i>::Type
#define NUMBERED_LIST_BALANCED_MAYBE_REF (   z,
  i,
  data 
)    BOOST_PP_COMMA_IF(i) typename MaybeRef<data##i>::Type
#define NUMBERED_LIST_HEAD (   z,
  i,
  data 
)    data##i,
#define NUMBERED_LIST_HEAD (   z,
  i,
  data 
)    data##i,
#define NUMBERED_LIST_TAIL (   z,
  i,
  data 
)    ,data##i
#define NUMBERED_LIST_TAIL (   z,
  i,
  data 
)    ,data##i
#define NUMBERED_LIST_TAIL_MAYBE_REF (   z,
  i,
  data 
)    , typename MaybeRef<data##i>::Type
#define NUMBERED_LIST_TAIL_MAYBE_REF (   z,
  i,
  data 
)    , typename MaybeRef<data##i>::Type
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) R (*fptr) ( ScriptInterface::CxPrivate* T0_TAIL_MAYBE_REF(z,i) )> \
void RegisterFunction(const char* name) { \
Register(name, call<R T0_TAIL(z,i), fptr>, nargs<T0(z,i)>()); \
}
#define T0(z, i)
Definition: ScriptInterface.h:54
#define T0_TAIL(z, i)
Definition: ScriptInterface.h:56
#define R(t)
static size_t nargs()
Definition: NativeWrapperDecls.h:92
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) R (*fptr) ( ScriptInterface::CxPrivate* T0_TAIL_MAYBE_REF(z,i) )> \
void RegisterFunction(const char* name) { \
Register(name, call<R T0_TAIL(z,i), fptr>, nargs<T0(z,i)>()); \
}
#define T0(z, i)
#define R(t)
#define T0_TAIL(z, i)
static size_t nargs()
Definition: NativeWrapperDecls.h:92
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) R (*fptr) ( ScriptInterface::CxPrivate* T0_TAIL_MAYBE_REF(z,i) )> \
static bool call(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) R (*fptr) ( ScriptInterface::CxPrivate* T0_TAIL_MAYBE_REF(z,i) )> \
static bool call(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) JSClass* CLS, typename TC, R (TC::*fptr) ( T0_MAYBE_REF(z,i) )> \
static bool callMethod(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) JSClass* CLS, typename TC, R (TC::*fptr) ( T0_MAYBE_REF(z,i) )> \
static bool callMethod(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) JSClass* CLS, typename TC, R (TC::*fptr) ( T0_MAYBE_REF(z,i) ) const> \
static bool callMethodConst(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define OVERLOADS (   z,
  i,
  data 
)
Value:
template <typename R, TYPENAME_T0_HEAD(z,i) JSClass* CLS, typename TC, R (TC::*fptr) ( T0_MAYBE_REF(z,i) ) const> \
static bool callMethodConst(JSContext* cx, uint argc, jsval* vp);
unsigned int uint
Definition: types.h:42
#define T0 (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
#define T0 (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
#define T0_MAYBE_REF (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED_MAYBE_REF, T)
#define T0_MAYBE_REF (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED_MAYBE_REF, T)
#define T0_TAIL (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
#define T0_TAIL (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
#define T0_TAIL_MAYBE_REF (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL_MAYBE_REF, T)
#define T0_TAIL_MAYBE_REF (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL_MAYBE_REF, T)
#define TYPENAME_T0_HEAD (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)
#define TYPENAME_T0_HEAD (   z,
 
)    BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)

Function Documentation

template<typename R , typename... Ts>
bool CallFunction ( JS::HandleValue  val,
const char *  name,
R ret,
const Ts &...  params 
) const
template<typename R , typename... Ts>
bool CallFunction ( JS::HandleValue  val,
const char *  name,
JS::Rooted< R > *  ret,
const Ts &...  params 
) const
template<typename R , typename... Ts>
bool CallFunction ( JS::HandleValue  val,
const char *  name,
JS::MutableHandle< R ret,
const Ts &...  params 
) const
template<typename... Ts>
bool CallFunctionVoid ( JS::HandleValue  val,
const char *  name,
const Ts &...  params 
) const
template<typename... Ts>
static size_t nargs ( )
static