summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index c714735..173a0ed 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -8,6 +8,18 @@
#include "dom/JSCCDATASection.h"
#include "dom/JSCSCXMLEvent.h"
+#include "dom/JSCArrayBuffer.h"
+#include "dom/JSCInt8Array.h"
+#include "dom/JSCUint8Array.h"
+#include "dom/JSCUint8ClampedArray.h"
+#include "dom/JSCInt16Array.h"
+#include "dom/JSCUint16Array.h"
+#include "dom/JSCInt32Array.h"
+#include "dom/JSCUint32Array.h"
+#include "dom/JSCFloat32Array.h"
+#include "dom/JSCFloat64Array.h"
+#include "dom/JSCDataView.h"
+
#include "uscxml/Message.h"
#include <glog/logging.h>
@@ -22,6 +34,12 @@ privData->nativeObj = new type<std::string>(node); \
JSObjectRef retObj = JSObjectMake(_ctx, JSC##type::getTmpl(), privData);\
return retObj;
+#define JSC_ADD_GLOBAL_OBJECT(name, constructor)\
+JSStringRef name##Name = JSStringCreateWithUTF8CString(#name);\
+JSObjectRef name = JSObjectMake(dm->_ctx, constructor, NULL);\
+JSObjectSetProperty(dm->_ctx, JSContextGetGlobalObject(dm->_ctx), name##Name, name, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, NULL);\
+JSStringRelease(name##Name);
+
namespace uscxml {
using namespace Arabica::XPath;
@@ -127,6 +145,18 @@ boost::shared_ptr<DataModelImpl> JSCDataModel::create(InterpreterImpl* interpret
JSStringRelease(sessionIdName);
JSStringRelease(sessionId);
+ JSC_ADD_GLOBAL_OBJECT(ArrayBuffer, JSCArrayBuffer::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Int8Array, JSCInt8Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Uint8Array, JSCUint8Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Uint8ClampedArray, JSCUint8ClampedArray::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Int16Array, JSCInt16Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Uint16Array, JSCUint16Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Int32Array, JSCInt32Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Uint32Array, JSCUint32Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Float32Array, JSCFloat32Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(Float64Array, JSCFloat64Array::getTmpl());
+ JSC_ADD_GLOBAL_OBJECT(DataView, JSCDataView::getTmpl());
+
JSCDocument::JSCDocumentPrivate* privData = new JSCDocument::JSCDocumentPrivate();
if (interpreter) {
privData->nativeObj = new Document<std::string>(interpreter->getDocument());