NArrange.VisualBasic.VBParser.ParseDelegate C# (CSharp) Method

ParseDelegate() private method

Parses a delegate.
private ParseDelegate ( CodeAccess access, MemberModifiers memberAttributes ) : DelegateElement
access CodeAccess The member access.
memberAttributes MemberModifiers The member attributes.
return NArrange.Core.CodeElements.DelegateElement
        private DelegateElement ParseDelegate(
			CodeAccess access, MemberModifiers memberAttributes)
        {
            string delegateType = CaptureWord();

            bool isFunction = false;
            switch (VBKeyword.Normalize(delegateType))
            {
                case VBKeyword.Sub:
                    isFunction = false;
                    break;

                case VBKeyword.Function:
                    isFunction = true;
                    break;

                default:
                    this.OnParseError(
                        "Expected Sub or Function for delegate declaration");
                    break;
            }

            MethodElement methodElement = ParseMethod(
                access, memberAttributes, isFunction, true, false, OperatorType.None, false, false, null);

            DelegateElement delegateElement = new DelegateElement();
            delegateElement.Name = methodElement.Name;
            delegateElement.Access = methodElement.Access;
            delegateElement.MemberModifiers = methodElement.MemberModifiers;
            delegateElement.Parameters = methodElement.Parameters;
            delegateElement.BodyText = methodElement.BodyText;
            if (isFunction)
            {
                delegateElement.Type = methodElement.Type;
            }

            foreach (TypeParameter typeParameter in methodElement.TypeParameters)
            {
                delegateElement.AddTypeParameter(typeParameter);
            }

            return delegateElement;
        }