Пример #1
0
        /* Function: GetAccessLevel
         * Returns the <Languages.AccessLevel> if it can be determined by the prototype.  This should only be used with basic language
         * support as it will not be as reliable as the dedicated language parser.
         */
        public Languages.AccessLevel GetAccessLevel()
        {
            Languages.AccessLevel accessLevel = Languages.AccessLevel.Unknown;

            TokenIterator iterator, end;

            if (GetModifiers(out iterator, out end) == false)
            {
                return(accessLevel);
            }

            bool previousWasUnderscore = false;

            while (iterator < end)
            {
                if (iterator.FundamentalType == FundamentalType.Text &&
                    iterator.ClassPrototypeParsingType == ClassPrototypeParsingType.Modifier &&
                    previousWasUnderscore == false)
                {
                    if (iterator.MatchesToken("public"))
                    {
                        accessLevel = Languages.AccessLevel.Public;
                    }
                    else if (iterator.MatchesToken("private"))
                    {
                        accessLevel = Languages.AccessLevel.Private;
                    }
                    else if (iterator.MatchesToken("protected"))
                    {
                        if (accessLevel == Languages.AccessLevel.Internal)
                        {
                            accessLevel = Languages.AccessLevel.ProtectedInternal;
                        }
                        else
                        {
                            accessLevel = Languages.AccessLevel.Protected;
                        }
                    }
                    else if (iterator.MatchesToken("internal"))
                    {
                        if (accessLevel == Languages.AccessLevel.Protected)
                        {
                            accessLevel = Languages.AccessLevel.ProtectedInternal;
                        }
                        else
                        {
                            accessLevel = Languages.AccessLevel.Internal;
                        }
                    }
                }
                else
                {
                    previousWasUnderscore = (iterator.Character == '_');
                }

                iterator.Next();
            }

            return(accessLevel);
        }
Пример #2
0
        /* Function: GetAccessLevel
         * Returns the <Languages.AccessLevel> if it can be determined.  This should only be used with basic language support
         * as it's not as reliable as the results from the dedicated language parsers.
         */
        virtual public Languages.AccessLevel GetAccessLevel()
        {
            Languages.AccessLevel accessLevel = Languages.AccessLevel.Unknown;

            TokenIterator iterator = start;

            while (iterator < end)
            {
                if (iterator.FundamentalType == FundamentalType.Text &&
                    iterator.PrototypeParsingType == PrototypeParsingType.TypeModifier &&
                    IsStandaloneWord(iterator))
                {
                    if (iterator.MatchesToken("public"))
                    {
                        accessLevel = Languages.AccessLevel.Public;
                    }
                    else if (iterator.MatchesToken("private"))
                    {
                        if (accessLevel == Languages.AccessLevel.Protected)
                        {
                            accessLevel = Languages.AccessLevel.PrivateProtected;
                        }
                        else
                        {
                            accessLevel = Languages.AccessLevel.Private;
                        }
                    }
                    else if (iterator.MatchesToken("protected"))
                    {
                        if (accessLevel == Languages.AccessLevel.Internal)
                        {
                            accessLevel = Languages.AccessLevel.ProtectedInternal;
                        }
                        else if (accessLevel == Languages.AccessLevel.Private)
                        {
                            accessLevel = Languages.AccessLevel.PrivateProtected;
                        }
                        else
                        {
                            accessLevel = Languages.AccessLevel.Protected;
                        }
                    }
                    else if (iterator.MatchesToken("internal"))
                    {
                        if (accessLevel == Languages.AccessLevel.Protected)
                        {
                            accessLevel = Languages.AccessLevel.ProtectedInternal;
                        }
                        else
                        {
                            accessLevel = Languages.AccessLevel.Internal;
                        }
                    }
                }

                iterator.Next();
            }

            return(accessLevel);
        }