예제 #1
0
 internal IndexObject(BaseScripter scripter, ObjectObject o)
     : base(scripter)
 {
     this.MinValue = 0;
     this.indexes = new ArrayList();
     if (o.Instance.GetType() == typeof(string))
     {
         this.string_instance = (string) o.Instance;
         this.what = 1;
     }
     else
     {
         this.array_instance = (Array) o.Instance;
         this.what = 2;
     }
 }
예제 #2
0
 internal ObjectObject CreateObject()
 {
     ObjectObject obj2 = new ObjectObject(base.Scripter, this);
     ClassObject obj3 = this;
     while (true) {
         for (int i = 0; i < obj3.Members.Count; i++) {
             MemberObject m = obj3.Members[i];
             if ((m.Kind == MemberKind.Field) && !m.Static) {
                 InstanceProperty p = new InstanceProperty(m, obj3.Id);
                 obj2.Properties.Add(p);
                 if (m.Imported) {
                     FieldObject obj5 = (FieldObject)m;
                     p.Field_Info = obj5.Field_Info;
                 }
             }
         }
         ClassObject ancestorClass = obj3.AncestorClass;
         if (ancestorClass == null) {
             return obj2;
         }
         obj3 = ancestorClass;
     }
 }
예제 #3
0
 internal ObjectObject AddDelegates(ObjectObject d1, ObjectObject d2)
 {
     object obj4;
     FunctionObject obj5;
     bool flag;
     ObjectObject obj3 = d1.Class_Object.CreateObject();
     for (flag = d1.FindFirstInvocation(out obj4, out obj5); flag; flag = d1.FindNextInvocation(out obj4, out obj5))
     {
         obj3.AddInvocation(obj4, obj5);
     }
     for (flag = d2.FindFirstInvocation(out obj4, out obj5); flag; flag = d2.FindNextInvocation(out obj4, out obj5))
     {
         obj3.AddInvocation(obj4, obj5);
     }
     return obj3;
 }
예제 #4
0
 private void ApplyDel(ObjectObject d, params object[] p)
 {
     if (d != null)
     {
         object obj2;
         FunctionObject obj3;
         d.FindFirstInvocation(out obj2, out obj3);
         while (obj3 != null)
         {
             this.code.CallMethodEx(RunMode.Run, obj2, obj3.Id, p);
             d.FindNextInvocation(out obj2, out obj3);
         }
     }
 }
예제 #5
0
 public ObjectObject Clone()
 {
     ObjectObject obj2 = new ObjectObject(base.Scripter, this.class_object);
     obj2.Instance = this.Instance;
     for (int i = 0; i < this.Properties.Count; i++)
     {
         InstanceProperty p = this.Properties[i].Clone();
         obj2.Properties.Add(p);
     }
     return obj2;
 }
예제 #6
0
 private bool CompareDelegates(ObjectObject d1, ObjectObject d2)
 {
     if (d1.InvocationCount == d2.InvocationCount)
     {
         object obj2;
         object obj3;
         FunctionObject obj4;
         FunctionObject obj5;
         bool flag = d1.FindFirstInvocation(out obj2, out obj4);
         for (flag = d2.FindFirstInvocation(out obj3, out obj5); flag; flag = d2.FindNextInvocation(out obj3, out obj5))
         {
             if ((obj2 != obj3) || (obj4 != obj5))
             {
                 return false;
             }
             flag = d1.FindNextInvocation(out obj2, out obj4);
         }
         return true;
     }
     return false;
 }