public ParameterDeclaration(ComParameter parameter, Declaration parent, QualifiedModuleName module) : this( module.QualifyMemberName(parameter.Name), parent, parameter.TypeName, null, null, parameter.IsOptional, parameter.IsByRef, parameter.IsArray, parameter.IsParamArray) { }
public ParameterDeclaration(ComParameter parameter, Declaration parent, QualifiedModuleName module) : this( module.QualifyMemberName(parameter.Name), parent, parameter.TypeName, null, null, parameter.IsOptional, parameter.IsByRef, parameter.IsArray, parameter.IsParamArray) { if (!string.IsNullOrEmpty(parameter.DefaultAsEnum)) { DefaultValue = parameter.DefaultAsEnum; } else if (parameter.HasDefaultValue) { DefaultValue = parameter.DefaultValue is string defaultValue?defaultValue.ToVbExpression(false) : parameter.DefaultValue.ToString(); } }
private Declaration CreateMemberDeclaration(FUNCDESC memberDescriptor, TYPEKIND typeKind, ITypeInfo info, IMPLTYPEFLAGS parentImplFlags, QualifiedModuleName typeQualifiedModuleName, Declaration moduleDeclaration, out string[] memberNames) { if (memberDescriptor.callconv != CALLCONV.CC_STDCALL) { memberNames = new string[] { }; return(null); } memberNames = new string[255]; int namesArrayLength; info.GetNames(memberDescriptor.memid, memberNames, 255, out namesArrayLength); var memberName = memberNames[0]; var funcValueType = (VarEnum)memberDescriptor.elemdescFunc.tdesc.vt; var memberDeclarationType = GetDeclarationType(memberName, memberDescriptor, funcValueType, typeKind, parentImplFlags); if (((FUNCFLAGS)memberDescriptor.wFuncFlags).HasFlag(FUNCFLAGS.FUNCFLAG_FRESTRICTED) && IgnoredInterfaceMembers.Contains(memberName)) // Ignore IDispatch and IUnknown members - quick-and-dirty for beta { return(null); } var asTypeName = new ComParameter(string.Empty, false); if (memberDeclarationType != DeclarationType.Procedure) { asTypeName = GetParameterInfo(memberDescriptor.elemdescFunc.tdesc, info); } var attributes = new Attributes(); if (memberName == "_NewEnum" && ((FUNCFLAGS)memberDescriptor.wFuncFlags).HasFlag(FUNCFLAGS.FUNCFLAG_FNONBROWSABLE)) { attributes.AddEnumeratorMemberAttribute(memberName); } else if (memberDescriptor.memid == 0) { attributes.AddDefaultMemberAttribute(memberName); } else if (((FUNCFLAGS)memberDescriptor.wFuncFlags).HasFlag(FUNCFLAGS.FUNCFLAG_FHIDDEN)) { attributes.AddHiddenMemberAttribute(memberName); } switch (memberDeclarationType) { case DeclarationType.Procedure: return(new SubroutineDeclaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, Accessibility.Global, null, Selection.Home, true, null, attributes)); case DeclarationType.Function: return(new FunctionDeclaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, null, null, Accessibility.Global, null, Selection.Home, asTypeName.IsArray, true, null, attributes)); case DeclarationType.PropertyGet: return(new PropertyGetDeclaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, null, null, Accessibility.Global, null, Selection.Home, asTypeName.IsArray, true, null, attributes)); case DeclarationType.PropertySet: return(new PropertySetDeclaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, Accessibility.Global, null, Selection.Home, true, null, attributes)); case DeclarationType.PropertyLet: return(new PropertyLetDeclaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, Accessibility.Global, null, Selection.Home, true, null, attributes)); default: return(new Declaration( new QualifiedMemberName(typeQualifiedModuleName, memberName), moduleDeclaration, moduleDeclaration, asTypeName.Name, null, false, false, Accessibility.Global, memberDeclarationType, null, Selection.Home, false, null, true, null, attributes)); } }