Ejemplo n.º 1
0
 /// <exception cref="VariantException"></exception>
 /// <exception cref="TjsException"></exception>
 public virtual void AssignStructure(Dispatch2 dsp, AList <Dispatch2> stack)
 {
     // assign structured data from dsp
     //ArrayNI dicni = null;
     if (dsp.GetNativeInstance(DictionaryClass.ClassID) != null)
     {
         // copy from dictionary
         stack.AddItem(dsp);
         try
         {
             CustomObject owner = mOwner.Get();
             owner.Clear();
             DictionaryNI.AssignStructCallback callback = new DictionaryNI.AssignStructCallback
                                                              (stack, owner);
             dsp.EnumMembers(Interface.IGNOREPROP, callback, dsp);
         }
         finally
         {
             stack.Remove(stack.Count - 1);
         }
     }
     else
     {
         throw new TjsException(Error.SpecifyDicOrArray);
     }
 }
Ejemplo n.º 2
0
        public virtual void Clear()
        {
            CustomObject owner = mOwner.Get();

            if (owner != null)
            {
                owner.Clear();
            }
        }
Ejemplo n.º 3
0
        /// <exception cref="VariantException"></exception>
        /// <exception cref="TjsException"></exception>
        public virtual void Assign(Dispatch2 dsp, bool clear)
        {
            // copy members from "dsp" to "Owner"
            // determin dsp's object type
            ArrayNI      arrayni = null;
            CustomObject owner   = mOwner.Get();

            if (dsp != null && (arrayni = (ArrayNI)dsp.GetNativeInstance(ArrayClass.ClassID))
                != null)
            {
                // convert from array
                if (clear)
                {
                    owner.Clear();
                }
                int count = arrayni.mItems.Count;
                for (int i = 0; i < count; i++)
                {
                    Variant v    = arrayni.mItems[i];
                    string  name = v.AsString();
                    i++;
                    if (i >= count)
                    {
                        break;
                    }
                    Variant v2 = arrayni.mItems[i];
                    owner.PropSet(Interface.MEMBERENSURE | Interface.IGNOREPROP, name, v2, owner);
                }
            }
            else
            {
                // otherwise
                if (clear)
                {
                    owner.Clear();
                }
                DictionaryNI.AssignCallback callback = new DictionaryNI.AssignCallback(owner);
                dsp.EnumMembers(Interface.IGNOREPROP, callback, dsp);
            }
        }
Ejemplo n.º 4
0
 public virtual void Shutdown()
 {
     //variantArrayStackCompactNow();
     if (mGlobal != null)
     {
         try
         {
             mGlobal.Invalidate(0, null, mGlobal);
         }
         catch (VariantException)
         {
         }
         catch (TjsException)
         {
         }
         mGlobal.Clear();
         mGlobal = null;
     }
     if (mCache != null)
     {
         mCache = null;
     }
 }