diff Jint.Runtime/VM/Box.cs @ 6:a6329b092499

Added scopes, function builder
author cin
date Wed, 30 Oct 2013 17:38:35 +0400
parents cb13da6e3349
children
line wrap: on
line diff
--- a/Jint.Runtime/VM/Box.cs	Mon Oct 28 00:49:15 2013 +0400
+++ b/Jint.Runtime/VM/Box.cs	Wed Oct 30 17:38:35 2013 +0400
@@ -1,72 +1,77 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Jint.Runtime.VM.OpCodes;
-using System.ComponentModel;
-
-namespace Jint.Runtime.VM {
-    class Box<T>: AbstractBox, IGettter<T>, ISetter<T> {
-
-        public T holdingValue;
-        object[] m_impl;
-        RuntimeContext m_runtime;
-        TypeConverter m_converter;
-
-        public Box(T value, RuntimeContext runtime): base(typeof(T)) {
-            if (runtime == null)
-                throw new ArgumentNullException("runtime");
-
-            holdingValue = value;
-            m_runtime = runtime;
-        }
-
-        object[] Impl {
-            get {
-                if (m_impl == null)
-                    m_impl = m_runtime.GetImpl(typeof(T));
-                return m_impl;
-            }
-        }
-
-        TypeConverter TypeConverter {
-            get {
-                if (m_converter == null)
-                    m_converter = TypeDescriptor.GetConverter(typeof(T));
-                return m_converter;
-            }
-        }
-
-        public T Get() {
-            return holdingValue;
-        }
-
-        public void Set(T value) {
-            holdingValue = value;
-        }
-
-        public override void InvokeBinaryOperation(Codes code, int arg2, int dest, Frame frame) {
-            var op = (BinaryOperation<T>)Impl[(int)code];
-            frame.SetValue(dest, op(holdingValue, frame.GetValue<T>(arg2)));
-        }
-
-        public override void InvokeUnaryOperation(Codes code, int dest, Frame frame) {
-            var op = (UnaryOperation<T>)Impl[(int)code];
-            frame.SetValue(dest, op(holdingValue));
-        }
-
-        public override int InvokeCompareOperation(int arg2, Frame frame) {
-            var op = (CompareOperation<T>)Impl[(int)Codes.Cmp];
-            return op(holdingValue, frame.GetValue<T>(arg2));
-        }
-
-        public override bool InvokeEqualityOperation(int arg2, Frame frame) {
-            var op = (EqualityOperation<T>)Impl[(int)Codes.Cmp];
-            return op(holdingValue, frame.GetValue<T>(arg2));
-        }
-
-        public override T2 Convert<T2>() {
-            return (T2)TypeConverter.ConvertTo(holdingValue, typeof(T2));
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Jint.Runtime.VM.OpCodes;
+using System.ComponentModel;
+
+namespace Jint.Runtime.VM {
+    class Box<T>: AbstractBox, IGettter<T>, ISetter<T> {
+
+        public T holdingValue;
+        object[] m_impl;
+        RuntimeContext m_runtime;
+        TypeConverter m_converter;
+
+        public Box(T value, RuntimeContext runtime): base(typeof(T)) {
+            if (runtime == null)
+                throw new ArgumentNullException("runtime");
+
+            holdingValue = value;
+            m_runtime = runtime;
+        }
+
+        object[] Impl {
+            get {
+                if (m_impl == null)
+                    m_impl = m_runtime.GetImpl(typeof(T));
+                return m_impl;
+            }
+        }
+
+        TypeConverter TypeConverter {
+            get {
+                if (m_converter == null)
+                    m_converter = TypeDescriptor.GetConverter(typeof(T));
+                return m_converter;
+            }
+        }
+
+        public T Get() {
+            return holdingValue;
+        }
+
+        public void Set(T value) {
+            holdingValue = value;
+        }
+
+        public override void InvokeBinaryOperation(Codes code, int arg2, int dest, Frame frame) {
+            var op = (BinaryOperation<T>)Impl[(int)code];
+            frame.SetValue(dest, op(holdingValue, frame.GetValue<T>(arg2)));
+        }
+
+        public override void InvokeUnaryOperation(Codes code, int dest, Frame frame) {
+            var op = (UnaryOperation<T>)Impl[(int)code];
+            frame.SetValue(dest, op(holdingValue));
+        }
+
+        public override int InvokeCompareOperation(int arg2, Frame frame) {
+            var op = (CompareOperation<T>)Impl[(int)Codes.Cmp];
+            return op(holdingValue, frame.GetValue<T>(arg2));
+        }
+
+        public override bool InvokeEqualityOperation(int arg2, Frame frame) {
+            var op = (EqualityOperation<T>)Impl[(int)Codes.Cmp];
+            return op(holdingValue, frame.GetValue<T>(arg2));
+        }
+
+        public override T2 Convert<T2>() {
+            return (T2)TypeConverter.ConvertTo(holdingValue, typeof(T2));
+        }
+
+		public override void CopyTo (Frame frame, int dest)
+		{
+			frame.SetValue (dest, holdingValue);
+		}
+    }
+}