/// <exception cref="VariantException"></exception> /// <exception cref="TjsException"></exception> public virtual int EnumMembers(int flags, EnumMembersCallback callback, Dispatch2 objthis) { if (mObject == null) { throw new TjsException(Error.NullAccess); } return(mObject.EnumMembers(flags, callback, mObjThis != null ? mObjThis : (objthis != null ? objthis : mObject))); }
// enumerate members /// <exception cref="VariantException"></exception> /// <exception cref="TjsException"></exception> public virtual int EnumMembers(int flags, EnumMembersCallback callback, Dispatch2 objthis) { return(Error.E_NOTIMPL); }
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception> /// <exception cref="Kirikiri.Tjs2.TJSException"></exception> public virtual int EnumMembers(int flags, EnumMembersCallback callback, Dispatch2 objthis) { return Error.E_NOTIMPL; }
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception> /// <exception cref="Kirikiri.Tjs2.TJSException"></exception> public virtual int EnumMembers(int flags, EnumMembersCallback callback, Dispatch2 objthis) { if (mObject == null) { throw new TJSException(Error.NullAccess); } return mObject.EnumMembers(flags, callback, mObjThis != null ? mObjThis : (objthis != null ? objthis : mObject)); }
/// <exception cref="Kirikiri.Tjs2.VariantException"></exception> /// <exception cref="Kirikiri.Tjs2.TJSException"></exception> public override int EnumMembers(int flags, EnumMembersCallback callback, Dispatch2 objthis) { if (!GetValidity()) { return Error.E_INVALIDOBJECT; } if (callback == null) { return Error.S_OK; } Variant value = new Variant(); for (int i = 0; i < mHashSize; i++) { SymbolData lv1 = mSymbols[i]; SymbolData d = lv1.mNext; while (d != null) { SymbolData nextd = d.mNext; if ((d.mSymFlags & SYMBOL_USING) != 0) { if (EnumCallback(flags, callback, value, objthis, d) == false) { return Error.S_OK; } } d = nextd; } if ((lv1.mSymFlags & SYMBOL_USING) != 0) { if (EnumCallback(flags, callback, value, objthis, lv1) == false) { return Error.S_OK; } } } return Error.S_OK; }
/// <exception cref="Kirikiri.Tjs2.TJSException"></exception> private static bool EnumCallback(int flags, EnumMembersCallback callback, Variant value, Dispatch2 objthis, SymbolData data) { int newflags = 0; if ((data.mSymFlags & SYMBOL_HIDDEN) != 0) { newflags |= Interface.HIDDENMEMBER; } if ((data.mSymFlags & SYMBOL_STATIC) != 0) { newflags |= Interface.STATICMEMBER; } value.Clear(); if ((flags & Interface.ENUM_NO_VALUE) == 0) { bool getvalues = false; if ((flags & Interface.IGNOREPROP) == 0) { Variant targ = data.mValue; if (targ.IsObject()) { VariantClosure tvclosure = targ.AsObjectClosure(); int hr = Error.E_NOTIMPL; if (tvclosure.mObject != null) { Dispatch2 disp = tvclosure.mObjThis != null ? tvclosure.mObjThis : objthis; hr = tvclosure.mObject.PropGet(0, null, value, disp); } if (hr >= 0) { getvalues = true; } else { if (hr != Error.E_NOTIMPL && hr != Error.E_INVALIDTYPE && hr != Error.E_INVALIDOBJECT) { return false; } } } } if (getvalues == false) { value.CopyRef(data.mValue); } } return callback.Callback(data.mName, newflags, value); }