ScriptInterface.h File Reference

#include <memory>
#include <vector>
#include <string>
#include "ScriptTypes.h"
#include "ScriptVal.h"
#include "js/jsapi.h"
#include "lib/file/vfs/vfs_path.h"
#include "ps/Profile.h"
#include "ps/utf16string.h"
#include <boost/random/linear_congruential.hpp>
#include "NativeWrapperDecls.h"
#include <boost/preprocessor/punctuation/comma_if.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>

Go to the source code of this file.

Classes

class  ScriptInterface
 Abstraction around a SpiderMonkey JSContext. More...
class  ScriptInterface::StructuredClone
 Structured clones are a way to serialize 'simple' JS values into a buffer that can safely be passed between contexts and runtimes and threads. More...

Defines

#define SCRIPT_INTERFACE_MAX_ARGS   7
#define DEFAULT_RUNTIME_SIZE   16 * 1024 * 1024
#define ENABLE_SCRIPT_PROFILING   1
#define NUMBERED_LIST_HEAD(z, i, data)   data##i,
#define NUMBERED_LIST_TAIL(z, i, data)   ,data##i
#define NUMBERED_LIST_BALANCED(z, i, data)   BOOST_PP_COMMA_IF(i) data##i
#define TYPED_ARGS(z, i, data)   , T##i a##i
#define CONVERT_ARG(z, i, data)   T##i a##i; if (! ScriptInterface::FromJSVal<T##i>(cx, i < argc ? JS_ARGV(cx, vp)[i] : JSVAL_VOID, a##i)) return JS_FALSE;
#define TYPENAME_T0_HEAD(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)
#define TYPENAME_T0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, typename T)
#define T0(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
#define T0_HEAD(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, T)
#define T0_TAIL(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
#define T0_A0(z, i)   BOOST_PP_REPEAT_##z (i, TYPED_ARGS, ~)
#define A0(z, i)   BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, a)
#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 Documentation

#define A0 ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, a)
#define A0_TAIL ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, a)
#define CONVERT_ARG ( z,
i,
data   )     T##i a##i; if (! ScriptInterface::FromJSVal<T##i>(cx, i < argc ? JS_ARGV(cx, vp)[i] : JSVAL_VOID, a##i)) return JS_FALSE;
#define DEFAULT_RUNTIME_SIZE   16 * 1024 * 1024
#define ENABLE_SCRIPT_PROFILING   1
#define NUMBERED_LIST_BALANCED ( z,
i,
data   )     BOOST_PP_COMMA_IF(i) data##i
#define NUMBERED_LIST_HEAD ( z,
i,
data   )     data##i,
#define NUMBERED_LIST_TAIL ( z,
i,
data   )     ,data##i
#define OVERLOADS ( z,
i,
data   ) 
Value:
template <int dummy TYPENAME_T0_TAIL(z,i)> /* add a dummy parameter so we still compile with 0 template args */ \
    static size_t nargs() { return i; }
#define OVERLOADS ( z,
i,
data   ) 
Value:
template <typename R, TYPENAME_T0_HEAD(z,i)  JSClass* CLS, typename TC, R (TC::*fptr) ( T0(z,i) )> \
    static JSBool callMethod(JSContext* cx, uintN argc, jsval* vp);
#define OVERLOADS ( z,
i,
data   ) 
Value:
template <typename R, TYPENAME_T0_HEAD(z,i)  R (*fptr) ( void* T0_TAIL(z,i) )> \
    static JSBool call(JSContext* cx, uintN argc, jsval* vp);
#define OVERLOADS ( z,
i,
data   ) 
Value:
template <typename R, TYPENAME_T0_HEAD(z,i)  R (*fptr) ( void* T0_TAIL(z,i) )> \
    void RegisterFunction(const char* name) { \
        Register(name, call<R, T0_HEAD(z,i)  fptr>, nargs<0 T0_TAIL(z,i)>()); \
    }
#define SCRIPT_INTERFACE_MAX_ARGS   7
#define T0 ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_BALANCED, T)
#define T0_A0 ( z,
 )     BOOST_PP_REPEAT_##z (i, TYPED_ARGS, ~)
#define T0_HEAD ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, T)
#define T0_TAIL ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, T)
#define TYPED_ARGS ( z,
i,
data   )     , T##i a##i
#define TYPENAME_T0_HEAD ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_HEAD, typename T)
#define TYPENAME_T0_TAIL ( z,
 )     BOOST_PP_REPEAT_##z (i, NUMBERED_LIST_TAIL, typename T)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed May 16 03:15:24 2012 for Pyrogenesis by  doxygen 1.6.3