Пример #1
0
            public static ProjectAttributes ReadFrom(ObjectReader reader)
            {
                var projectId = ProjectId.ReadFrom(reader);

                // var version = VersionStamp.ReadFrom(reader);
                var name                       = reader.ReadString();
                var assemblyName               = reader.ReadString();
                var language                   = reader.ReadString();
                var filePath                   = reader.ReadString();
                var outputFilePath             = reader.ReadString();
                var outputRefFilePath          = reader.ReadString();
                var compilationOutputFilePaths = CompilationOutputInfo.ReadFrom(reader);
                var defaultNamespace           = reader.ReadString();
                var isSubmission               = reader.ReadBoolean();
                var hasAllInformation          = reader.ReadBoolean();
                var runAnalyzers               = reader.ReadBoolean();
                var telemetryId                = reader.ReadGuid();

                return(new ProjectAttributes(
                           projectId,
                           VersionStamp.Create(),
                           name,
                           assemblyName,
                           language,
                           filePath,
                           outputFilePath,
                           outputRefFilePath,
                           compilationOutputFilePaths,
                           defaultNamespace,
                           isSubmission,
                           hasAllInformation,
                           runAnalyzers,
                           telemetryId));
            }
Пример #2
0
        private static void ReadFrom(ObjectReader reader, Project project, Document document, List <DiagnosticData> list, CancellationToken cancellationToken)
        {
            var count = reader.ReadInt32();

            for (var i = 0; i < count; i++)
            {
                cancellationToken.ThrowIfCancellationRequested();

                var id       = reader.ReadString();
                var category = reader.ReadString();

                var message            = reader.ReadString();
                var messageFormat      = reader.ReadString();
                var title              = reader.ReadString();
                var description        = reader.ReadString();
                var helpLink           = reader.ReadString();
                var severity           = (DiagnosticSeverity)reader.ReadInt32();
                var defaultSeverity    = (DiagnosticSeverity)reader.ReadInt32();
                var isEnabledByDefault = reader.ReadBoolean();
                var isSuppressed       = reader.ReadBoolean();
                var warningLevel       = reader.ReadInt32();

                var start    = reader.ReadInt32();
                var length   = reader.ReadInt32();
                var textSpan = new TextSpan(start, length);

                var location            = ReadLocation(project, reader, document);
                var additionalLocations = ReadAdditionalLocations(project, reader);

                var customTagsCount = reader.ReadInt32();
                var customTags      = GetCustomTags(reader, customTagsCount);

                var propertiesCount = reader.ReadInt32();
                var properties      = GetProperties(reader, propertiesCount);

                list.Add(new DiagnosticData(
                             id: id,
                             category: category,
                             message: message,
                             enuMessageForBingSearch: messageFormat,
                             severity: severity,
                             defaultSeverity: defaultSeverity,
                             isEnabledByDefault: isEnabledByDefault,
                             warningLevel: warningLevel,
                             customTags: customTags,
                             properties: properties,
                             projectId: project.Id,
                             location: location,
                             additionalLocations: additionalLocations,
                             language: project.Language,
                             title: title,
                             description: description,
                             helpLink: helpLink,
                             isSuppressed: isSuppressed));
            }
        }
Пример #3
0
        public void TestRoundTripPrimitives()
        {
            var stream = new MemoryStream();
            var writer = new ObjectWriter(stream);

            writer.WriteBoolean(true);
            writer.WriteBoolean(false);
            writer.WriteByte(Byte.MaxValue);
            writer.WriteSByte(SByte.MaxValue);
            writer.WriteInt16(Int16.MaxValue);
            writer.WriteInt32(Int32.MaxValue);
            writer.WriteInt32(Byte.MaxValue);
            writer.WriteInt32(Int16.MaxValue);
            writer.WriteInt64(Int64.MaxValue);
            writer.WriteUInt16(UInt16.MaxValue);
            writer.WriteUInt32(UInt32.MaxValue);
            writer.WriteUInt64(UInt64.MaxValue);
            writer.WriteDecimal(Decimal.MaxValue);
            writer.WriteDouble(Double.MaxValue);
            writer.WriteSingle(Single.MaxValue);
            writer.WriteChar('X');
            writer.WriteString("YYY");
            writer.WriteCompressedUInt(Byte.MaxValue >> 2);   // 6 bits
            writer.WriteCompressedUInt(UInt16.MaxValue >> 2); // 14 bits
            writer.WriteCompressedUInt(UInt32.MaxValue >> 2); // 30 bits
            var dt = DateTime.Now;

            writer.WriteDateTime(dt);
            writer.Dispose();

            stream.Position = 0;
            var reader = new ObjectReader(stream);

            Assert.Equal(true, reader.ReadBoolean());
            Assert.Equal(false, reader.ReadBoolean());
            Assert.Equal(Byte.MaxValue, reader.ReadByte());
            Assert.Equal(SByte.MaxValue, reader.ReadSByte());
            Assert.Equal(Int16.MaxValue, reader.ReadInt16());
            Assert.Equal(Int32.MaxValue, reader.ReadInt32());
            Assert.Equal(Byte.MaxValue, reader.ReadInt32());
            Assert.Equal(Int16.MaxValue, reader.ReadInt32());
            Assert.Equal(Int64.MaxValue, reader.ReadInt64());
            Assert.Equal(UInt16.MaxValue, reader.ReadUInt16());
            Assert.Equal(UInt32.MaxValue, reader.ReadUInt32());
            Assert.Equal(UInt64.MaxValue, reader.ReadUInt64());
            Assert.Equal(Decimal.MaxValue, reader.ReadDecimal());
            Assert.Equal(Double.MaxValue, reader.ReadDouble());
            Assert.Equal(Single.MaxValue, reader.ReadSingle());
            Assert.Equal('X', reader.ReadChar());
            Assert.Equal("YYY", reader.ReadString());
            Assert.Equal((UInt32)(Byte.MaxValue >> 2), reader.ReadCompressedUInt());
            Assert.Equal((UInt32)(UInt16.MaxValue >> 2), reader.ReadCompressedUInt());
            Assert.Equal(UInt32.MaxValue >> 2, reader.ReadCompressedUInt());
            Assert.Equal(dt, reader.ReadDateTime());
            reader.Dispose();
        }
Пример #4
0
            public static DocumentAttributes ReadFrom(ObjectReader reader)
            {
                var documentId = DocumentId.ReadFrom(reader);

                var name           = reader.ReadString();
                var folders        = (string[])reader.ReadValue();
                var sourceCodeKind = reader.ReadInt32();
                var filePath       = reader.ReadString();
                var isGenerated    = reader.ReadBoolean();
                var designTimeOnly = reader.ReadBoolean();

                return(new DocumentAttributes(documentId, name, folders, (SourceCodeKind)sourceCodeKind, filePath, isGenerated, designTimeOnly));
            }
Пример #5
0
            public static ProjectAttributes ReadFrom(ObjectReader reader)
            {
                var projectId = ProjectId.ReadFrom(reader);

                // var version = VersionStamp.ReadFrom(reader);
                var name              = reader.ReadString();
                var assemblyName      = reader.ReadString();
                var language          = reader.ReadString();
                var filePath          = reader.ReadString();
                var outputFilePath    = reader.ReadString();
                var isSubmission      = reader.ReadBoolean();
                var hasAllInformation = reader.ReadBoolean();

                return(new ProjectAttributes(projectId, VersionStamp.Create(), name, assemblyName, language, filePath, outputFilePath, isSubmission, hasAllInformation));
            }
Пример #6
0
        public Texture2DArray(ObjectReader reader) : base(reader)
        {
            m_Width           = reader.ReadInt32();
            m_Height          = reader.ReadInt32();
            m_Depth           = reader.ReadInt32();
            m_TextureFormat   = (TextureFormat)reader.ReadInt32();
            m_MipCount        = reader.ReadInt32();
            m_DataSize        = reader.ReadUInt32();
            m_TextureSettings = new GLTextureSettings(reader);
            m_ColorSpace      = reader.ReadInt32();
            m_IsReadable      = reader.ReadBoolean();
            reader.AlignStream();

            var image_data_size = reader.ReadInt32();

            if (image_data_size == 0)
            {
                m_StreamData = new StreamingInfo(reader);
            }

            if (!string.IsNullOrEmpty(m_StreamData?.path))
            {
                image_data = new ResourceReader(m_StreamData.path, assetsFile, m_StreamData.offset, (int)m_StreamData.size);
            }
            else
            {
                image_data = new ResourceReader(reader, reader.BaseStream.Position, image_data_size);
            }
        }
Пример #7
0
 protected Texture(ObjectReader reader) : base(reader)
 {
     if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up
     {
         var m_ForcedFallbackFormat = reader.ReadInt32();
         var m_DownscaleFallback    = reader.ReadBoolean();
         reader.AlignStream();
     }
 }
Пример #8
0
        private MetadataReferenceProperties ReadMetadataReferencePropertiesFrom(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var kind              = (MetadataImageKind)reader.ReadInt32();
            var aliases           = reader.ReadArray <string>().ToImmutableArrayOrEmpty();
            var embedInteropTypes = reader.ReadBoolean();

            return(new MetadataReferenceProperties(kind, aliases, embedInteropTypes));
        }
        private ProjectReference DeserializeProjectReference(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var projectId         = ProjectId.ReadFrom(reader);
            var aliases           = reader.ReadArray <string>();
            var embedInteropTypes = reader.ReadBoolean();

            return(new ProjectReference(projectId, aliases.ToImmutableArrayOrEmpty(), embedInteropTypes));
        }
Пример #10
0
        private static AnalyzerTelemetryInfo ReadTelemetry(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var compilationStartActionsCount    = reader.ReadInt32();
            var compilationEndActionsCount      = reader.ReadInt32();
            var compilationActionsCount         = reader.ReadInt32();
            var syntaxTreeActionsCount          = reader.ReadInt32();
            var additionalFileActionsCount      = reader.ReadInt32();
            var semanticModelActionsCount       = reader.ReadInt32();
            var symbolActionsCount              = reader.ReadInt32();
            var symbolStartActionsCount         = reader.ReadInt32();
            var symbolEndActionsCount           = reader.ReadInt32();
            var syntaxNodeActionsCount          = reader.ReadInt32();
            var codeBlockStartActionsCount      = reader.ReadInt32();
            var codeBlockEndActionsCount        = reader.ReadInt32();
            var codeBlockActionsCount           = reader.ReadInt32();
            var operationActionsCount           = reader.ReadInt32();
            var operationBlockActionsCount      = reader.ReadInt32();
            var operationBlockStartActionsCount = reader.ReadInt32();
            var operationBlockEndActionsCount   = reader.ReadInt32();
            var suppressionActionsCount         = reader.ReadInt32();
            var executionTime = new TimeSpan(reader.ReadInt64());
            var concurrent    = reader.ReadBoolean();

            return(new AnalyzerTelemetryInfo()
            {
                CompilationStartActionsCount = compilationStartActionsCount,
                CompilationEndActionsCount = compilationEndActionsCount,
                CompilationActionsCount = compilationActionsCount,

                SyntaxTreeActionsCount = syntaxTreeActionsCount,
                AdditionalFileActionsCount = additionalFileActionsCount,
                SemanticModelActionsCount = semanticModelActionsCount,
                SymbolActionsCount = symbolActionsCount,
                SymbolStartActionsCount = symbolStartActionsCount,
                SymbolEndActionsCount = symbolEndActionsCount,
                SyntaxNodeActionsCount = syntaxNodeActionsCount,

                CodeBlockStartActionsCount = codeBlockStartActionsCount,
                CodeBlockEndActionsCount = codeBlockEndActionsCount,
                CodeBlockActionsCount = codeBlockActionsCount,

                OperationActionsCount = operationActionsCount,
                OperationBlockStartActionsCount = operationBlockStartActionsCount,
                OperationBlockEndActionsCount = operationBlockEndActionsCount,
                OperationBlockActionsCount = operationBlockActionsCount,

                SuppressionActionsCount = suppressionActionsCount,

                ExecutionTime = executionTime,

                Concurrent = concurrent
            });
        }
Пример #11
0
 public override MetadataReference ReadMetadataReferenceFrom(ObjectReader reader, CancellationToken cancellationToken)
 {
     if (reader.ReadBoolean())
     {
         // this is a well-known reference
         return(s_wellKnownReferences[reader.ReadString()]);
     }
     else
     {
         return(base.ReadMetadataReferenceFrom(reader, cancellationToken));
     }
 }
Пример #12
0
            private void AppendItems(ObjectReader reader, Project project, Document document, List <DiagnosticData> list, CancellationToken cancellationToken)
            {
                var count = reader.ReadInt32();

                for (var i = 0; i < count; i++)
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    var id       = reader.ReadString();
                    var category = reader.ReadString();

                    var message            = reader.ReadString();
                    var messageFormat      = reader.ReadString();
                    var title              = reader.ReadString();
                    var description        = reader.ReadString();
                    var helpLink           = reader.ReadString();
                    var severity           = (DiagnosticSeverity)reader.ReadInt32();
                    var defaultSeverity    = (DiagnosticSeverity)reader.ReadInt32();
                    var isEnabledByDefault = reader.ReadBoolean();
                    var warningLevel       = reader.ReadInt32();

                    var start    = reader.ReadInt32();
                    var length   = reader.ReadInt32();
                    var textSpan = new TextSpan(start, length);

                    var originalFile        = reader.ReadString();
                    var originalStartLine   = reader.ReadInt32();
                    var originalStartColumn = reader.ReadInt32();
                    var originalEndLine     = reader.ReadInt32();
                    var originalEndColumn   = reader.ReadInt32();

                    var mappedFile        = reader.ReadString();
                    var mappedStartLine   = reader.ReadInt32();
                    var mappedStartColumn = reader.ReadInt32();
                    var mappedEndLine     = reader.ReadInt32();
                    var mappedEndColumn   = reader.ReadInt32();

                    var customTagsCount = reader.ReadInt32();
                    var customTags      = GetCustomTags(reader, customTagsCount);

                    var propertiesCount = reader.ReadInt32();
                    var properties      = GetProperties(reader, propertiesCount);

                    list.Add(new DiagnosticData(
                                 id, category, message, messageFormat, severity, defaultSeverity, isEnabledByDefault, warningLevel, customTags, properties,
                                 project.Solution.Workspace, project.Id, document != null ? document.Id : null, document != null ? textSpan : (TextSpan?)null,
                                 mappedFile, mappedStartLine, mappedStartColumn, mappedEndLine, mappedEndColumn,
                                 originalFile, originalStartLine, originalStartColumn, originalEndLine, originalEndColumn,
                                 title: title,
                                 description: description,
                                 helpLink: helpLink));
                }
            }
 private static void TestReadingPrimitiveAPIs(ObjectReader reader)
 {
     Assert.Equal(true, reader.ReadBoolean());
     Assert.Equal(false, reader.ReadBoolean());
     Assert.Equal(Byte.MaxValue, reader.ReadByte());
     Assert.Equal(SByte.MaxValue, reader.ReadSByte());
     Assert.Equal(Int16.MaxValue, reader.ReadInt16());
     Assert.Equal(Int32.MaxValue, reader.ReadInt32());
     Assert.Equal(Byte.MaxValue, reader.ReadInt32());
     Assert.Equal(Int16.MaxValue, reader.ReadInt32());
     Assert.Equal(Int64.MaxValue, reader.ReadInt64());
     Assert.Equal(UInt16.MaxValue, reader.ReadUInt16());
     Assert.Equal(UInt32.MaxValue, reader.ReadUInt32());
     Assert.Equal(UInt64.MaxValue, reader.ReadUInt64());
     Assert.Equal(Decimal.MaxValue, reader.ReadDecimal());
     Assert.Equal(Double.MaxValue, reader.ReadDouble());
     Assert.Equal(Single.MaxValue, reader.ReadSingle());
     Assert.Equal('X', reader.ReadChar());
     Assert.Equal("YYY", reader.ReadString());
     Assert.Equal("\uD800\uDC00", reader.ReadString()); // valid surrogate pair
     Assert.Equal("\uDC00\uD800", reader.ReadString()); // invalid surrogate pair
     Assert.Equal("\uD800", reader.ReadString());       // incomplete surrogate pair
 }
Пример #14
0
        private DocumentChecksumObjectInfo DeserializeDocumentSnapshotInfo(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var documentId = DeserializeDocumentId(reader, cancellationToken);

            var name           = reader.ReadString();
            var folders        = reader.ReadArray <string>();
            var sourceCodeKind = reader.ReadInt32();
            var filePath       = reader.ReadString();
            var isGenerated    = reader.ReadBoolean();

            return(new DocumentChecksumObjectInfo(documentId, name, folders, (SourceCodeKind)sourceCodeKind, filePath, isGenerated));
        }
Пример #15
0
        public static BloomFilter ReadFrom(ObjectReader reader)
        {
            var version = reader.ReadString();

            if (!string.Equals(version, SerializationFormat, StringComparison.Ordinal))
            {
                return(null);
            }

            var isCaseSensitive   = reader.ReadBoolean();
            int hashFunctionCount = reader.ReadInt32();
            var bitArray          = ReadBitArray(reader);

            return(new BloomFilter(bitArray, hashFunctionCount, isCaseSensitive));
        }
Пример #16
0
        private static DiagnosticDataLocation ReadLocation(Project project, ObjectReader reader, Document documentOpt)
        {
            var exists = reader.ReadBoolean();

            if (!exists)
            {
                return(null);
            }

            TextSpan?sourceSpan = null;

            if (reader.ReadBoolean())
            {
                sourceSpan = new TextSpan(reader.ReadInt32(), reader.ReadInt32());
            }

            var originalFile        = reader.ReadString();
            var originalStartLine   = reader.ReadInt32();
            var originalStartColumn = reader.ReadInt32();
            var originalEndLine     = reader.ReadInt32();
            var originalEndColumn   = reader.ReadInt32();

            var mappedFile        = reader.ReadString();
            var mappedStartLine   = reader.ReadInt32();
            var mappedStartColumn = reader.ReadInt32();
            var mappedEndLine     = reader.ReadInt32();
            var mappedEndColumn   = reader.ReadInt32();

            var documentId = documentOpt != null
                ? documentOpt.Id
                : project.Documents.FirstOrDefault(d => d.FilePath == originalFile)?.Id;

            return(new DiagnosticDataLocation(documentId, sourceSpan,
                                              originalFile, originalStartLine, originalStartColumn, originalEndLine, originalEndColumn,
                                              mappedFile, mappedStartLine, mappedStartColumn, mappedEndLine, mappedEndColumn));
        }
Пример #17
0
        public AnalyzerReference ReadAnalyzerReferenceFrom(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var type = reader.ReadString();

            if (type == nameof(AnalyzerFileReference))
            {
                var fullPath   = reader.ReadString();
                var shadowCopy = reader.ReadBoolean();
                return(new AnalyzerFileReference(fullPath, _analyzerLoaderProvider.GetLoader(new AnalyzerAssemblyLoaderOptions(shadowCopy))));
            }

            throw ExceptionUtilities.UnexpectedValue(type);
        }
Пример #18
0
        private SerializedProjectInfo DeserializeSerializedProjectInfo(ObjectReader reader, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var projectId = DeserializeProjectId(reader, cancellationToken);

            // var version = VersionStamp.ReadFrom(reader);
            var name           = reader.ReadString();
            var assemblyName   = reader.ReadString();
            var language       = reader.ReadString();
            var filePath       = reader.ReadString();
            var outputFilePath = reader.ReadString();
            var isSubmission   = reader.ReadBoolean();

            return(new SerializedProjectInfo(projectId, VersionStamp.Create(), name, assemblyName, language, filePath, outputFilePath, isSubmission));
        }
Пример #19
0
        protected DiagnosticInfo(ObjectReader reader)
        {
            this.messageProvider  = (CommonMessageProvider)reader.ReadValue();
            this.errorCode        = (int)reader.ReadCompressedUInt();
            this.isWarningAsError = reader.ReadBoolean();

            var count = (int)reader.ReadCompressedUInt();

            if (count > 0)
            {
                this.arguments = new string[count];
                for (int i = 0; i < count; i++)
                {
                    this.arguments[i] = reader.ReadString();
                }
            }
        }
Пример #20
0
        public override CompilationOptions ReadCompilationOptionsFrom(ObjectReader reader, CancellationToken cancellationToken)
        {
            ReadCompilationOptionsFrom(
                reader,
                out var outputKind, out var reportSuppressedDiagnostics, out var moduleName, out var mainTypeName, out var scriptClassName,
                out var optimizationLevel, out var checkOverflow, out var cryptoKeyContainer, out var cryptoKeyFile, out var cryptoPublicKey,
                out var delaySign, out var platform, out var generalDiagnosticOption, out var warningLevel, out var specificDiagnosticOptions,
                out var concurrentBuild, out var deterministic, out var publicSign, out var xmlReferenceResolver, out var sourceReferenceResolver,
                out var metadataReferenceResolver, out var assemblyIdentityComparer, out var strongNameProvider, cancellationToken);

            var usings      = reader.ReadArray <string>();
            var allowUnsafe = reader.ReadBoolean();

            return(new CSharpCompilationOptions(
                       outputKind, reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe,
                       cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild,
                       deterministic, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, publicSign));
        }
Пример #21
0
        public override CompilationOptions ReadCompilationOptionsFrom(ObjectReader reader, CancellationToken cancellationToken)
        {
            OutputKind            outputKind;
            bool                  reportSuppressedDiagnostics;
            string                moduleName;
            string                mainTypeName;
            string                scriptClassName;
            OptimizationLevel     optimizationLevel;
            bool                  checkOverflow;
            string                cryptoKeyContainer;
            string                cryptoKeyFile;
            ImmutableArray <byte> cryptoPublicKey;
            bool?                 delaySign;
            Platform              platform;
            ReportDiagnostic      generalDiagnosticOption;
            int warningLevel;
            IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions;
            bool concurrentBuild;
            bool deterministic;
            bool publicSign;
            XmlReferenceResolver      xmlReferenceResolver;
            SourceReferenceResolver   sourceReferenceResolver;
            MetadataReferenceResolver metadataReferenceResolver;
            AssemblyIdentityComparer  assemblyIdentityComparer;
            StrongNameProvider        strongNameProvider;

            ReadCompilationOptionsFrom(
                reader,
                out outputKind, out reportSuppressedDiagnostics, out moduleName, out mainTypeName, out scriptClassName,
                out optimizationLevel, out checkOverflow, out cryptoKeyContainer, out cryptoKeyFile, out cryptoPublicKey,
                out delaySign, out platform, out generalDiagnosticOption, out warningLevel, out specificDiagnosticOptions,
                out concurrentBuild, out deterministic, out publicSign, out xmlReferenceResolver, out sourceReferenceResolver,
                out metadataReferenceResolver, out assemblyIdentityComparer, out strongNameProvider, cancellationToken);

            var usings      = reader.ReadArray <string>();
            var allowUnsafe = reader.ReadBoolean();

            return(new CSharpCompilationOptions(
                       outputKind, reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe,
                       cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild,
                       deterministic, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, publicSign));
        }
Пример #22
0
        public Texture2D(ObjectReader reader) : base(reader)
        {
            m_Width  = reader.ReadInt32();
            m_Height = reader.ReadInt32();
            var m_CompleteImageSize = reader.ReadInt32();

            if (version[0] >= 2020) //2020.1 and up
            {
                var m_MipsStripped = reader.ReadInt32();
            }
            m_TextureFormat = (TextureFormat)reader.ReadInt32();
            if (version[0] < 5 || (version[0] == 5 && version[1] < 2)) //5.2 down
            {
                m_MipMap = reader.ReadBoolean();
            }
            else
            {
                m_MipCount = reader.ReadInt32();
            }
            if (version[0] > 2 || (version[0] == 2 && version[1] >= 6)) //2.6.0 and up
            {
                var m_IsReadable = reader.ReadBoolean();
            }
            if (version[0] >= 2020) //2020.1 and up
            {
                var m_IsPreProcessed = reader.ReadBoolean();
            }
            if (version[0] > 2019 || (version[0] == 2019 && version[1] >= 3)) //2019.3 and up
            {
                var m_IgnoreMasterTextureLimit = reader.ReadBoolean();
            }
            if (version[0] >= 3) //3.0.0 - 5.4
            {
                if (version[0] < 5 || (version[0] == 5 && version[1] <= 4))
                {
                    var m_ReadAllowed = reader.ReadBoolean();
                }
            }
            if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 2)) //2018.2 and up
            {
                var m_StreamingMipmaps = reader.ReadBoolean();
            }
            reader.AlignStream();
            if (version[0] > 2018 || (version[0] == 2018 && version[1] >= 2)) //2018.2 and up
            {
                var m_StreamingMipmapsPriority = reader.ReadInt32();
            }
            var m_ImageCount       = reader.ReadInt32();
            var m_TextureDimension = reader.ReadInt32();

            m_TextureSettings = new GLTextureSettings(reader);
            if (version[0] >= 3) //3.0 and up
            {
                var m_LightmapFormat = reader.ReadInt32();
            }
            if (version[0] > 3 || (version[0] == 3 && version[1] >= 5)) //3.5.0 and up
            {
                var m_ColorSpace = reader.ReadInt32();
            }
            var image_data_size = reader.ReadInt32();

            if (image_data_size == 0 && ((version[0] == 5 && version[1] >= 3) || version[0] > 5))//5.3.0 and up
            {
                m_StreamData = new StreamingInfo(reader);
            }

            ResourceReader resourceReader;

            if (!string.IsNullOrEmpty(m_StreamData?.path))
            {
                resourceReader = new ResourceReader(m_StreamData.path, assetsFile, m_StreamData.offset, (int)m_StreamData.size);
            }
            else
            {
                resourceReader = new ResourceReader(reader, reader.BaseStream.Position, image_data_size);
            }
            image_data = resourceReader;
        }
Пример #23
0
        protected void ReadCompilationOptionsFrom(
            ObjectReader reader,
            out OutputKind outputKind,
            out bool reportSuppressedDiagnostics,
            out string moduleName,
            out string mainTypeName,
            out string scriptClassName,
            out OptimizationLevel optimizationLevel,
            out bool checkOverflow,
            out string cryptoKeyContainer,
            out string cryptoKeyFile,
            out ImmutableArray <byte> cryptoPublicKey,
            out bool?delaySign,
            out Platform platform,
            out ReportDiagnostic generalDiagnosticOption,
            out int warningLevel,
            out IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions,
            out bool concurrentBuild,
            out bool deterministic,
            out bool publicSign,
            out XmlReferenceResolver xmlReferenceResolver,
            out SourceReferenceResolver sourceReferenceResolver,
            out MetadataReferenceResolver metadataReferenceResolver,
            out AssemblyIdentityComparer assemblyIdentityComparer,
            out StrongNameProvider strongNameProvider,
            CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            outputKind = (OutputKind)reader.ReadInt32();
            reportSuppressedDiagnostics = reader.ReadBoolean();
            moduleName   = reader.ReadString();
            mainTypeName = reader.ReadString();

            scriptClassName   = reader.ReadString();
            optimizationLevel = (OptimizationLevel)reader.ReadInt32();
            checkOverflow     = reader.ReadBoolean();

            // REVIEW: is it okay this being not part of snapshot?
            cryptoKeyContainer = reader.ReadString();
            cryptoKeyFile      = reader.ReadString();

            cryptoPublicKey = reader.ReadArray <byte>().ToImmutableArrayOrEmpty();

            delaySign = reader.ReadBoolean() ? (bool?)reader.ReadBoolean() : null;

            platform = (Platform)reader.ReadInt32();
            generalDiagnosticOption = (ReportDiagnostic)reader.ReadInt32();

            warningLevel = reader.ReadInt32();

            // REVIEW: I don't think there is a guarantee on ordering of elements in the immutable dictionary.
            //         unfortunately, we need to sort them to make it deterministic
            //         not sure why CompilationOptions uses SequencialEqual to check options equality
            //         when ordering can change result of it even if contents are same.
            var count = reader.ReadInt32();
            List <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptionsList = null;

            if (count > 0)
            {
                specificDiagnosticOptionsList = new List <KeyValuePair <string, ReportDiagnostic> >(count);

                for (var i = 0; i < count; i++)
                {
                    var key   = reader.ReadString();
                    var value = (ReportDiagnostic)reader.ReadInt32();

                    specificDiagnosticOptionsList.Add(KeyValuePair.Create(key, value));
                }
            }

            specificDiagnosticOptions = specificDiagnosticOptionsList ?? SpecializedCollections.EmptyEnumerable <KeyValuePair <string, ReportDiagnostic> >();

            concurrentBuild = reader.ReadBoolean();
            deterministic   = reader.ReadBoolean();
            publicSign      = reader.ReadBoolean();

            // REVIEW: What should I do with these. are these service required when compilation is built ourselves, not through
            //         compiler.
            xmlReferenceResolver      = XmlFileResolver.Default;
            sourceReferenceResolver   = SourceFileResolver.Default;
            metadataReferenceResolver = null;
            assemblyIdentityComparer  = DesktopAssemblyIdentityComparer.Default;
            strongNameProvider        = new DesktopStrongNameProvider();
        }