Ejemplo n.º 1
0
        private void CopyInstanceDataFrom(IRubyObject/*!*/ source, bool copyFrozenState) {
            // copy instance data, but not the state:
            var sourceData = source.TryGetInstanceData();
            if (sourceData != null) {
                _instanceData = new RubyInstanceData();
                sourceData.CopyInstanceVariablesTo(_instanceData);
            }

            // copy flags:
            SetTaint(this, IsTainted(source));
            if (copyFrozenState && IsFrozen(source)) {
                Freeze(this);
            }
        }
Ejemplo n.º 2
0
        public object Invoke <TScope>(CallSite /*!*/ callSite, TScope /*!*/ scope, object self)
        {
            IRubyObject obj = self as IRubyObject;

            if (obj != null && obj.ImmediateClass.Version.Method == Version)
            {
                // TODO: optimize
                RubyInstanceData data = obj.TryGetInstanceData();
                return((data != null) ? data.GetInstanceVariable(Name) : null);
            }
            else
            {
                return(((CallSite <Func <CallSite, TScope, object, object> >)callSite).Update(callSite, scope, self));
            }
        }
Ejemplo n.º 3
0
        private void CopyInstanceDataFrom(IRubyObject /*!*/ source, bool copyFrozenState)
        {
            // copy instance data, but not the state:
            var sourceData = source.TryGetInstanceData();

            if (sourceData != null)
            {
                _instanceData = new RubyInstanceData();
                sourceData.CopyInstanceVariablesTo(_instanceData);
            }

            // copy flags:
            SetTaint(this, IsTainted(source));
            if (copyFrozenState && IsFrozen(source))
            {
                Freeze(this);
            }
        }
Ejemplo n.º 4
0
 public static bool IsTainted(IRubyObject/*!*/ obj) {
     var instanceData = obj.TryGetInstanceData();
     return instanceData != null && instanceData.Tainted;
 }
Ejemplo n.º 5
0
 public static bool IsFrozen(IRubyObject/*!*/ obj) {
     var instanceData = obj.TryGetInstanceData();
     return instanceData != null && instanceData.Frozen;
 }
Ejemplo n.º 6
0
        public static bool IsTainted(IRubyObject /*!*/ obj)
        {
            var instanceData = obj.TryGetInstanceData();

            return(instanceData != null && instanceData.Tainted);
        }
Ejemplo n.º 7
0
        public static bool IsFrozen(IRubyObject /*!*/ obj)
        {
            var instanceData = obj.TryGetInstanceData();

            return(instanceData != null && instanceData.Frozen);
        }