コード例 #1
0
ファイル: RubyObject.cs プロジェクト: aceptra/ironruby
 public static MutableString/*!*/ BaseToMutableString(IRubyObject/*!*/ self) {
     if (self is RubyObject) {
         return ToMutableString(self);
     } else {
         return MutableString.CreateMutable(self.BaseToString());
     }
 }
コード例 #2
0
        private static RubyClass /*!*/ GetImmediateClass(object self)
        {
            IRubyObject rubyObj = self as IRubyObject;

            ContractUtils.RequiresNotNull(rubyObj, "self");
            return(rubyObj.ImmediateClass);
        }
コード例 #3
0
ファイル: RubyObject.cs プロジェクト: joshholmes/ironruby
        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);
            }
        }
コード例 #4
0
ファイル: MethodDispatcher.cs プロジェクト: yyyyj/ironruby
        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));
            }
        }
コード例 #5
0
ファイル: MethodDispatcher.cs プロジェクト: yyyyj/ironruby
        public object Invoke <TScope>(CallSite /*!*/ callSite, TScope /*!*/ scope, object self, T0 arg0)
        {
            IRubyObject obj = self as IRubyObject;

            if (obj != null && obj.ImmediateClass.Version.Method == Version)
            {
                var result = (object)arg0;
                // TODO: optimize
                obj.ImmediateClass.Context.SetInstanceVariable(obj, Name, result);
                return(result);
            }
            else
            {
                return(((CallSite <Func <CallSite, TScope, object, T0, object> >)callSite).Update(callSite, scope, self, arg0));
            }
        }
コード例 #6
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);
            }
        }
コード例 #7
0
ファイル: RubyObject.cs プロジェクト: joshholmes/ironruby
 public static bool IsFrozen(IRubyObject/*!*/ obj) {
     var instanceData = obj.TryGetInstanceData();
     return instanceData != null && instanceData.Frozen;
 }
コード例 #8
0
 public Meta(Expression /*!*/ expression, Restrictions /*!*/ restrictions, IRubyObject /*!*/ value)
     : base(expression, restrictions, value)
 {
     ContractUtils.RequiresNotNull(value, "value");
 }
コード例 #9
0
 public RubyObjectDebugView(IRubyObject /*!*/ obj)
 {
     Assert.NotNull(obj);
     _obj = obj;
 }
コード例 #10
0
 public RubyObjectDebugView(IRubyObject/*!*/ obj) {
     Assert.NotNull(obj);
     _obj = obj;
 }
コード例 #11
0
 public Meta(Expression/*!*/ expression, BindingRestrictions/*!*/ restrictions, IRubyObject/*!*/ value)
     : base(expression, restrictions, value) {
     ContractUtils.RequiresNotNull(value, "value");
 }
コード例 #12
0
ファイル: RubyObject.cs プロジェクト: joshholmes/ironruby
 public static void SetTaint(IRubyObject/*!*/ obj, bool value) {
     obj.GetInstanceData().Tainted = value;
 }
コード例 #13
0
ファイル: RubyOps.cs プロジェクト: mscottford/ironruby
 public static MetaObject/*!*/ GetMetaObject(IRubyObject/*!*/ obj, Expression/*!*/ parameter) {
     return new RubyObject.Meta(parameter, Restrictions.Empty, obj);
 }
コード例 #14
0
ファイル: RubyOps.cs プロジェクト: teejayvanslyke/ironruby
 public static DynamicMetaObject/*!*/ GetMetaObject(IRubyObject/*!*/ obj, MSA.Expression/*!*/ parameter) {
     return new RubyObject.Meta(parameter, BindingRestrictions.Empty, obj);
 }
コード例 #15
0
 public static void Freeze(IRubyObject /*!*/ obj)
 {
     obj.GetInstanceData().Freeze();
 }
コード例 #16
0
        public static bool IsTainted(IRubyObject /*!*/ obj)
        {
            var instanceData = obj.TryGetInstanceData();

            return(instanceData != null && instanceData.Tainted);
        }
コード例 #17
0
ファイル: RubyObject.cs プロジェクト: aceptra/ironruby
 public static MutableString/*!*/ ToMutableString(IRubyObject/*!*/ self) {
     return RubyUtils.FormatObject(self.ImmediateClass.GetNonSingletonClass().Name, self.GetInstanceData().ObjectId, self.IsTainted);
 }
コード例 #18
0
ファイル: KernelOps.cs プロジェクト: teejayvanslyke/ironruby
 public static bool ValueEquals(IRubyObject self, object other) {
     return object.ReferenceEquals(self, other);
 }
コード例 #19
0
ファイル: KernelOps.cs プロジェクト: teejayvanslyke/ironruby
 public static int Hash(IRubyObject self) {
     return self == null ? RubyUtils.NilObjectId : RuntimeHelpers.GetHashCode(self);
 }
コード例 #20
0
ファイル: RubyObject.cs プロジェクト: joshholmes/ironruby
 public static bool IsTainted(IRubyObject/*!*/ obj) {
     var instanceData = obj.TryGetInstanceData();
     return instanceData != null && instanceData.Tainted;
 }
コード例 #21
0
ファイル: RubyOps.cs プロジェクト: teejayvanslyke/ironruby
 public static RubyContext/*!*/ GetContextFromIRubyObject(IRubyObject/*!*/ obj) {
     return obj.ImmediateClass.Context;
 }
コード例 #22
0
ファイル: RubyObject.cs プロジェクト: joshholmes/ironruby
 public static void Freeze(IRubyObject/*!*/ obj) {
     obj.GetInstanceData().Freeze();
 }
コード例 #23
0
        public static bool IsFrozen(IRubyObject /*!*/ obj)
        {
            var instanceData = obj.TryGetInstanceData();

            return(instanceData != null && instanceData.Frozen);
        }
コード例 #24
0
 public static bool ValueEquals([NotNull] IRubyObject /*!*/ self, object other)
 {
     return(self.BaseEquals(other));
 }
コード例 #25
0
 public static void SetTaint(IRubyObject /*!*/ obj, bool value)
 {
     obj.GetInstanceData().Tainted = value;
 }