Example #1
0
        public DeclaredSymbolInfo(
            string name,
            string nameSuffix,
            string containerDisplayName,
            string fullyQualifiedContainerName,
            DeclaredSymbolInfoKind kind,
            Accessibility accessibility,
            TextSpan span,
            ImmutableArray <string> inheritanceNames,
            int parameterCount = 0, int typeParameterCount = 0)
            : this()
        {
            Name                        = name;
            NameSuffix                  = nameSuffix;
            ContainerDisplayName        = containerDisplayName;
            FullyQualifiedContainerName = fullyQualifiedContainerName;
            Span                        = span;
            InheritanceNames            = inheritanceNames;

            const uint MaxFlagValue = 0b1111;

            Contract.ThrowIfTrue((uint)accessibility > MaxFlagValue);
            Contract.ThrowIfTrue((uint)kind > MaxFlagValue);
            parameterCount     = Math.Min(parameterCount, (byte)MaxFlagValue);
            typeParameterCount = Math.Min(typeParameterCount, (byte)MaxFlagValue);

            _flags = (uint)kind | ((uint)accessibility << 4) | ((uint)parameterCount << 8) | ((uint)typeParameterCount << 12);
        }
            private static Glyph GetGlyph(DeclaredSymbolInfoKind kind, Accessibility accessibility)
            {
                // Glyphs are stored in this order:
                //  ClassPublic,
                //  ClassProtected,
                //  ClassPrivate,
                //  ClassInternal,

                var rawGlyph = GetPublicGlyph(kind);

                switch (accessibility)
                {
                case Accessibility.Private:
                    rawGlyph += (Glyph.ClassPrivate - Glyph.ClassPublic);
                    break;

                case Accessibility.Internal:
                    rawGlyph += (Glyph.ClassInternal - Glyph.ClassPublic);
                    break;

                case Accessibility.Protected:
                case Accessibility.ProtectedOrInternal:
                case Accessibility.ProtectedAndInternal:
                    rawGlyph += (Glyph.ClassProtected - Glyph.ClassPublic);
                    break;
                }

                return(rawGlyph);
            }
Example #3
0
        public DeclaredSymbolInfo(
            StringTable stringTable,
            string name,
            string nameSuffix,
            string containerDisplayName,
            string fullyQualifiedContainerName,
            DeclaredSymbolInfoKind kind,
            Accessibility accessibility,
            TextSpan span,
            ImmutableArray <string> inheritanceNames,
            bool isNestedType = false, int parameterCount = 0, int typeParameterCount = 0)
        {
            Name                        = Intern(stringTable, name);
            NameSuffix                  = Intern(stringTable, nameSuffix);
            ContainerDisplayName        = Intern(stringTable, containerDisplayName);
            FullyQualifiedContainerName = Intern(stringTable, fullyQualifiedContainerName);
            Span                        = span;
            InheritanceNames            = inheritanceNames;

            const uint MaxFlagValue = 0b1111;

            Contract.ThrowIfTrue((uint)accessibility > MaxFlagValue);
            Contract.ThrowIfTrue((uint)kind > MaxFlagValue);
            parameterCount     = Math.Min(parameterCount, (byte)MaxFlagValue);
            typeParameterCount = Math.Min(typeParameterCount, (byte)MaxFlagValue);

            _flags =
                (uint)kind |
                ((uint)accessibility << 4) |
                ((uint)parameterCount << 8) |
                ((uint)typeParameterCount << 12) |
                ((isNestedType ? 1u : 0u) << 16);
        }
Example #4
0
 public DeclaredSymbolInfo(string name, string container, DeclaredSymbolInfoKind kind, TextSpan span, ushort parameterCount = 0, ushort typeParameterCount = 0)
     : this()
 {
     Name               = name;
     Container          = container;
     Kind               = kind;
     Span               = span;
     ParameterCount     = parameterCount;
     TypeParameterCount = typeParameterCount;
 }
 public DeclaredSymbolInfo(string name, string containerDisplayName, string fullyQualifiedContainerName, DeclaredSymbolInfoKind kind, TextSpan span, ushort parameterCount = 0, ushort typeParameterCount = 0)
     : this()
 {
     Name = name;
     ContainerDisplayName = containerDisplayName;
     FullyQualifiedContainerName = fullyQualifiedContainerName;
     Kind = kind;
     Span = span;
     ParameterCount = parameterCount;
     TypeParameterCount = typeParameterCount;
 }
Example #6
0
 public DeclaredSymbolInfo(string name, string containerDisplayName, string fullyQualifiedContainerName, DeclaredSymbolInfoKind kind, TextSpan span, ushort parameterCount = 0, ushort typeParameterCount = 0)
     : this()
 {
     Name = name;
     ContainerDisplayName        = containerDisplayName;
     FullyQualifiedContainerName = fullyQualifiedContainerName;
     Kind               = kind;
     Span               = span;
     ParameterCount     = parameterCount;
     TypeParameterCount = typeParameterCount;
 }
Example #7
0
        public DeclaredSymbolInfo(SyntaxNode node, string name, string fullyQualifiedContainerName, DeclaredSymbolInfoKind kind, TextSpan span, ushort parameterCount = 0, ushort typeParameterCount = 0)
            : this()
        {
            this.FilePath = node.SyntaxTree.FilePath;
            Name          = name;
//			ContainerDisplayName = string.Intern (containerDisplayName);
            FullyQualifiedContainerName = fullyQualifiedContainerName;
            Kind               = kind;
            Span               = span;
            ParameterCount     = parameterCount;
            TypeParameterCount = typeParameterCount;
        }
Example #8
0
        public static DeclaredSymbolInfo Create(
            StringTable stringTable,
            string name,
            string nameSuffix,
            string containerDisplayName,
            string fullyQualifiedContainerName,
            bool isPartial,
            DeclaredSymbolInfoKind kind,
            Accessibility accessibility,
            TextSpan span,
            ImmutableArray <string> inheritanceNames,
            bool isNestedType      = false,
            int parameterCount     = 0,
            int typeParameterCount = 0)
        {
            // Max value that we can store depending on how many bits we have to store that particular value in.
            const uint Max5BitValue = 0b11111;
            const uint Max4BitValue = 0b1111;

            Contract.ThrowIfTrue((uint)accessibility > Max4BitValue);
            Contract.ThrowIfTrue((uint)kind > Max5BitValue);

            parameterCount     = Math.Min(parameterCount, (byte)Max4BitValue);
            typeParameterCount = Math.Min(typeParameterCount, (byte)Max4BitValue);

            var flags =
                (uint)kind |
                ((uint)accessibility << 5) |
                ((uint)parameterCount << 9) |
                ((uint)typeParameterCount << 13) |
                ((isNestedType ? 1u : 0u) << 17) |
                ((isPartial ? 1u : 0u) << 18);

#pragma warning disable CS0618 // Type or member is obsolete
            return(new DeclaredSymbolInfo(
                       Intern(stringTable, name),
                       Intern(stringTable, nameSuffix),
                       Intern(stringTable, containerDisplayName),
                       Intern(stringTable, fullyQualifiedContainerName),
                       span,
                       inheritanceNames,
                       flags));

#pragma warning restore CS0618 // Type or member is obsolete
        }
Example #9
0
 public DeclaredSymbolInfo(
     string name,
     string containerDisplayName,
     string fullyQualifiedContainerName,
     DeclaredSymbolInfoKind kind,
     TextSpan span,
     ImmutableArray <string> inheritanceNames,
     ushort parameterCount = 0, ushort typeParameterCount = 0)
     : this()
 {
     Name = name;
     ContainerDisplayName        = containerDisplayName;
     FullyQualifiedContainerName = fullyQualifiedContainerName;
     Kind               = kind;
     Span               = span;
     ParameterCount     = parameterCount;
     TypeParameterCount = typeParameterCount;
     InheritanceNames   = inheritanceNames;
 }
Example #10
0
 public DeclaredSymbolInfo(
     string name,
     string containerDisplayName,
     string fullyQualifiedContainerName,
     DeclaredSymbolInfoKind kind,
     TextSpan span,
     ImmutableArray<string> inheritanceNames,
     ushort parameterCount = 0, ushort typeParameterCount = 0)
     : this()
 {
     Name = name;
     ContainerDisplayName = containerDisplayName;
     FullyQualifiedContainerName = fullyQualifiedContainerName;
     Kind = kind;
     Span = span;
     ParameterCount = parameterCount;
     TypeParameterCount = typeParameterCount;
     InheritanceNames = inheritanceNames;
 }
            private static Glyph GetPublicGlyph(DeclaredSymbolInfoKind kind)
            {
                switch (kind)
                {
                case DeclaredSymbolInfoKind.Class: return(Glyph.ClassPublic);

                case DeclaredSymbolInfoKind.Constant: return(Glyph.ConstantPublic);

                case DeclaredSymbolInfoKind.Constructor: return(Glyph.MethodPublic);

                case DeclaredSymbolInfoKind.Delegate: return(Glyph.DelegatePublic);

                case DeclaredSymbolInfoKind.Enum: return(Glyph.EnumPublic);

                case DeclaredSymbolInfoKind.EnumMember: return(Glyph.EnumMemberPublic);

                case DeclaredSymbolInfoKind.Event: return(Glyph.EventPublic);

                case DeclaredSymbolInfoKind.ExtensionMethod: return(Glyph.ExtensionMethodPublic);

                case DeclaredSymbolInfoKind.Field: return(Glyph.FieldPublic);

                case DeclaredSymbolInfoKind.Indexer: return(Glyph.PropertyPublic);

                case DeclaredSymbolInfoKind.Interface: return(Glyph.InterfacePublic);

                case DeclaredSymbolInfoKind.Method: return(Glyph.MethodPublic);

                case DeclaredSymbolInfoKind.Module: return(Glyph.ModulePublic);

                case DeclaredSymbolInfoKind.Property: return(Glyph.PropertyPublic);

                case DeclaredSymbolInfoKind.Struct: return(Glyph.StructurePublic);

                default: return(Glyph.ClassPublic);
                }
            }
 public bool Contains(DeclaredSymbolInfoKind item)
 {
     return((int)item < _lookupTable.Length &&
            _lookupTable[(int)item]);
 }
Example #13
0
		public DeclaredSymbolInfo(SyntaxNode node, string name, string fullyQualifiedContainerName, DeclaredSymbolInfoKind kind, TextSpan span, ushort parameterCount = 0, ushort typeParameterCount = 0)
			: this()
		{
			this.FilePath = node.SyntaxTree.FilePath;
			Name = string.Intern (name);
//			ContainerDisplayName = string.Intern (containerDisplayName);
			FullyQualifiedContainerName = fullyQualifiedContainerName;
			Kind = kind;
			Span = span;
			ParameterCount = parameterCount;
			TypeParameterCount = typeParameterCount;
		}