summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript/v8/dom
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript/v8/dom')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.cpp11
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h81
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.h5
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentCustom.cpp19
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp83
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.h90
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.h2
25 files changed, 215 insertions, 112 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.h
index 9829023..f216215 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Attr.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.h
index 3b95b84..5f936d2 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CDATASection.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Text.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.h
index 6c51ca7..d5846e4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8CharacterData.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.h
index 074da74..a19462d 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Comment.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8CharacterData.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.cpp
deleted file mode 100644
index 4562fe3..0000000
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "V8DOM.h"
-
-namespace Arabica {
-namespace DOM {
-
-V8DOM::V8DOM() {
-
-}
-
-}
-} \ No newline at end of file
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h
deleted file mode 100644
index 10528e8..0000000
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef V8DOM_H_LKE1HKJK
-#define V8DOM_H_LKE1HKJK
-
-#include "uscxml/Interpreter.h"
-#include <v8.h>
-#include <XPath/XPath.hpp>
-
-#define V8_DESTRUCTOR(type) \
-static void jsDestructor(v8::Persistent<v8::Value> object, void* data) { \
- v8::HandleScope handleScope; \
- type* thing = static_cast<type*>(v8::Local<v8::External>::Cast(object->ToObject()->GetInternalField(0))->Value()); \
- delete thing->nativeObj; \
- delete thing; \
- object.Dispose(); \
- object.Clear(); \
-}
-
-#define V8_DESTRUCTOR_KEEP_WRAPPED(type) \
-static void jsDestructor(v8::Persistent<v8::Value> object, void* data) { \
-v8::HandleScope handleScope; \
-type* thing = static_cast<type*>(v8::Local<v8::External>::Cast(object->ToObject()->GetInternalField(0))->Value()); \
-delete thing; \
-object.Dispose(); \
-object.Clear(); \
-}
-
-namespace Arabica {
-namespace DOM {
-
-class V8DOM {
-public:
- V8DOM();
- virtual ~V8DOM() { };
-
- template <typename T>
- static T* toClassPtr(v8::Local<v8::Value> data) {
- if(data.IsEmpty())
- return NULL;
- else if(!data->IsExternal())
- return NULL;
- else
- return static_cast<T *>(v8::External::Unwrap(data));
- return NULL;
- }
- static v8::Local<v8::External> toExternal(void* pointer) {
- v8::HandleScope scope;
- return scope.Close(v8::External::New(pointer));
- }
-
- Arabica::XPath::XPath<std::string>* xpath;
-};
-
-class V8Exception : public std::runtime_error {
-public:
-
- V8Exception(const std::string& reason) :
- std::runtime_error("DOMException") {
- } // V8Exception
-
- V8Exception(const V8Exception& rhs) :
- std::runtime_error(rhs),
- reason_(rhs.reason_) {
- } // DOMException
-
- virtual ~V8Exception() throw() {
- } // DOMBadCast
-
- virtual const char* what() const throw() {
- return reason_.c_str();
- } // what
-
-private:
- DOMBadCast& operator=(const DOMBadCast&);
- bool operator==(const DOMBadCast&) const;
-
- std::string reason_;
-}; // class DOMException
-
-}
-}
-#endif /* end of include guard: V8DOM_H_LKE1HKJK */
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.h
index 5c58e22..58d6f9a 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOMImplementation.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.h
index 2db4b54..a023ac9 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Document.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
@@ -60,6 +60,7 @@ public:
static v8::Handle<v8::Value> doctypeAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
static v8::Handle<v8::Value> implementationAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
static v8::Handle<v8::Value> documentElementAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+ static v8::Handle<v8::Value> localStorageCustomAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
static v8::Persistent<v8::FunctionTemplate> Tmpl;
static v8::Handle<v8::FunctionTemplate> getTmpl() {
@@ -80,6 +81,8 @@ public:
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
instance->SetAccessor(v8::String::NewSymbol("documentElement"), V8Document::documentElementAttrGetter, 0,
v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+ instance->SetAccessor(v8::String::NewSymbol("localStorage"), V8Document::localStorageCustomAttrGetter, 0,
+ v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
prototype->Set(v8::String::NewSymbol("createElement"),
v8::FunctionTemplate::New(V8Document::createElementCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentCustom.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentCustom.cpp
index 1e0b700..cd7f942 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentCustom.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentCustom.cpp
@@ -1,9 +1,28 @@
#include "V8Document.h"
#include "V8XPathResult.h"
+#include "V8Storage.h"
namespace Arabica {
namespace DOM {
+v8::Handle<v8::Value> V8Document::localStorageCustomAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
+ v8::Local<v8::Object> self = info.Holder();
+ V8DocumentPrivate* privData = V8DOM::toClassPtr<V8DocumentPrivate >(self->GetInternalField(0));
+
+ v8::Handle<v8::Function> retCtor = V8Storage::getTmpl()->GetFunction();
+ v8::Persistent<v8::Object> retObj = v8::Persistent<v8::Object>::New(retCtor->NewInstance());
+
+ V8Storage::V8StoragePrivate* retPrivData = new V8Storage::V8StoragePrivate();
+ retPrivData->dom = privData->dom;
+ retPrivData->nativeObj = privData->dom->storage;
+
+ retObj->SetInternalField(0, V8DOM::toExternal(retPrivData));
+
+ retObj.MakeWeak(0, V8XPathResult::jsDestructor);
+ return retObj;
+
+}
+
v8::Handle<v8::Value> V8Document::evaluateCustomCallback(const v8::Arguments& args) {
if (args.Length() < 1)
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.h
index c669b05..641aacd 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentFragment.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.h
index 59c2607..d1551a3 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8DocumentType.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.h
index e5a52bf..7263ab1 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Element.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.h
index 6e85585..88a284b 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Entity.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.h
index 86dd61b..cc25213 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8EntityReference.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.h
index be89037..d918186 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NamedNodeMap.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.h
index 2ea8ddc..b4fbad4 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Node.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.h
index c454e65..341c63a 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeList.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.h
index 97b5d4f..b95f4c1 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8NodeSet.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.h
index 0745728..51f324b 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Notation.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.h
index 56b61eb..d31d5d9 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8ProcessingInstruction.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8Node.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.h
index 8b71ed7..3c5e6ee 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8SCXMLEvent.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp
new file mode 100644
index 0000000..d9ab828
--- /dev/null
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.cpp
@@ -0,0 +1,83 @@
+#include "V8Storage.h"
+
+namespace Arabica {
+namespace DOM {
+
+v8::Persistent<v8::FunctionTemplate> V8Storage::Tmpl;
+
+
+v8::Handle<v8::Value> V8Storage::lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info) {
+ v8::Local<v8::Object> self = info.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+
+ return v8::Integer::New(privData->nativeObj->getLength());
+}
+v8::Handle<v8::Value> V8Storage::keyCallback(const v8::Arguments& args) {
+ if (args.Length() < 1)
+ throw V8Exception("Wrong number of arguments in key");
+
+ v8::Local<v8::Object> self = args.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+ unsigned long localIndex = args[0]->ToNumber()->Uint32Value();
+
+ std::string retVal = privData->nativeObj->key(localIndex);
+
+ return v8::String::New(retVal.c_str());
+}
+
+v8::Handle<v8::Value> V8Storage::getItemCallback(const v8::Arguments& args) {
+ if (args.Length() < 1)
+ throw V8Exception("Wrong number of arguments in getItem");
+
+ v8::Local<v8::Object> self = args.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+ v8::String::AsciiValue localKey(args[0]);
+
+ std::string retVal = privData->nativeObj->getItem(*localKey);
+
+ return v8::String::New(retVal.c_str());
+}
+
+v8::Handle<v8::Value> V8Storage::setItemCallback(const v8::Arguments& args) {
+ if (args.Length() < 2)
+ throw V8Exception("Wrong number of arguments in setItem");
+
+ v8::Local<v8::Object> self = args.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+ v8::String::AsciiValue localKey(args[0]);
+ v8::String::AsciiValue localValue(args[1]);
+
+ privData->nativeObj->setItem(*localKey, *localValue);
+
+ return v8::Undefined();
+}
+
+v8::Handle<v8::Value> V8Storage::removeItemCallback(const v8::Arguments& args) {
+ if (args.Length() < 1)
+ throw V8Exception("Wrong number of arguments in removeItem");
+
+ v8::Local<v8::Object> self = args.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+ v8::String::AsciiValue localKey(args[0]);
+
+ privData->nativeObj->removeItem(*localKey);
+
+ return v8::Undefined();
+}
+
+v8::Handle<v8::Value> V8Storage::clearCallback(const v8::Arguments& args) {
+
+ v8::Local<v8::Object> self = args.Holder();
+ struct V8StoragePrivate* privData = V8DOM::toClassPtr<V8StoragePrivate >(self->GetInternalField(0));
+
+ privData->nativeObj->clear();
+
+ return v8::Undefined();
+}
+
+bool V8Storage::hasInstance(v8::Handle<v8::Value> value) {
+ return getTmpl()->HasInstance(value);
+}
+
+}
+}
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.h
new file mode 100644
index 0000000..4d6692d
--- /dev/null
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Storage.h
@@ -0,0 +1,90 @@
+/*
+ This file is part of the Wrapper open source project.
+ This file has been generated by generate-bindings.pl. DO NOT MODIFY!
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef V8Storage_h
+#define V8Storage_h
+
+#include <string>
+#include "DOM/Node.hpp"
+#include "string"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
+#include <v8.h>
+
+namespace Arabica {
+namespace DOM {
+
+class V8Storage {
+public:
+ struct V8StoragePrivate {
+ V8DOM* dom;
+ uscxml::Storage* nativeObj;
+ };
+
+ V8_DESTRUCTOR_KEEP_WRAPPED(V8StoragePrivate);
+ static bool hasInstance(v8::Handle<v8::Value>);
+
+ static v8::Handle<v8::Value> keyCallback(const v8::Arguments&);
+ static v8::Handle<v8::Value> getItemCallback(const v8::Arguments&);
+ static v8::Handle<v8::Value> setItemCallback(const v8::Arguments&);
+ static v8::Handle<v8::Value> removeItemCallback(const v8::Arguments&);
+ static v8::Handle<v8::Value> clearCallback(const v8::Arguments&);
+
+ static v8::Handle<v8::Value> lengthAttrGetter(v8::Local<v8::String> property, const v8::AccessorInfo& info);
+
+ static v8::Persistent<v8::FunctionTemplate> Tmpl;
+ static v8::Handle<v8::FunctionTemplate> getTmpl() {
+ if (Tmpl.IsEmpty()) {
+ v8::Handle<v8::FunctionTemplate> tmpl = v8::FunctionTemplate::New();
+ tmpl->SetClassName(v8::String::New("Storage"));
+ tmpl->ReadOnlyPrototype();
+
+ v8::Local<v8::ObjectTemplate> instance = tmpl->InstanceTemplate();
+ v8::Local<v8::ObjectTemplate> prototype = tmpl->PrototypeTemplate();
+ (void)prototype; // surpress unused warnings
+
+ instance->SetInternalFieldCount(1);
+
+ instance->SetAccessor(v8::String::NewSymbol("length"), V8Storage::lengthAttrGetter, 0,
+ v8::External::New(0), static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None));
+
+ prototype->Set(v8::String::NewSymbol("key"),
+ v8::FunctionTemplate::New(V8Storage::keyCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+ prototype->Set(v8::String::NewSymbol("getItem"),
+ v8::FunctionTemplate::New(V8Storage::getItemCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+ prototype->Set(v8::String::NewSymbol("setItem"),
+ v8::FunctionTemplate::New(V8Storage::setItemCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+ prototype->Set(v8::String::NewSymbol("removeItem"),
+ v8::FunctionTemplate::New(V8Storage::removeItemCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+ prototype->Set(v8::String::NewSymbol("clear"),
+ v8::FunctionTemplate::New(V8Storage::clearCallback, v8::Undefined()), static_cast<v8::PropertyAttribute>(v8::DontDelete));
+
+
+ Tmpl = v8::Persistent<v8::FunctionTemplate>::New(tmpl);
+ }
+ return Tmpl;
+ }
+
+
+};
+
+}
+}
+
+#endif // V8Storage_h
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.h
index 61b92fb..0604984 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8Text.h
@@ -25,7 +25,7 @@
#include "DOM/Node.hpp"
#include "V8CharacterData.h"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.h b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.h
index f6a2d10..b613b93 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.h
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/dom/V8XPathResult.h
@@ -24,7 +24,7 @@
#include <string>
#include "DOM/Node.hpp"
#include "string"
-#include "uscxml/plugins/datamodel/ecmascript/v8/dom/V8DOM.h"
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DOM.h"
#include <v8.h>
namespace Arabica {