Mono.CompilerServices.SymbolWriter.MonoSymbolFile.GetSourceFile C# (CSharp) Method

GetSourceFile() public method

public GetSourceFile ( int index ) : SourceFileEntry
index int
return SourceFileEntry
        public SourceFileEntry GetSourceFile(int index)
        {
            if ((index < 1) || (index > ot.SourceCount))
                throw new ArgumentException ();
            if (reader == null)
                throw new InvalidOperationException ();

            lock (this) {
                SourceFileEntry source;
                if (source_file_hash.TryGetValue (index, out source))
                    return source;

                long old_pos = reader.BaseStream.Position;

                reader.BaseStream.Position = ot.SourceTableOffset +
                    SourceFileEntry.Size * (index - 1);
                source = new SourceFileEntry (this, reader);
                source_file_hash.Add (index, source);

                reader.BaseStream.Position = old_pos;
                return source;
            }
        }

Usage Example

Ejemplo n.º 1
0
        void ReadData()
        {
            if (creating)
            {
                throw new InvalidOperationException();
            }

            lock (file)
            {
                if (namespaces != null)
                {
                    return;
                }

                MyBinaryReader reader  = file.BinaryReader;
                int            old_pos = (int)reader.BaseStream.Position;

                reader.BaseStream.Position = DataOffset;

                int source_idx = reader.ReadLeb128();
                source = file.GetSourceFile(source_idx);

                int count_includes = reader.ReadLeb128();
                if (count_includes > 0)
                {
                    include_files = new List <SourceFileEntry> ();
                    for (int i = 0; i < count_includes; i++)
                    {
                        include_files.Add(file.GetSourceFile(reader.ReadLeb128()));
                    }
                }

                int count_ns = reader.ReadLeb128();
                namespaces = new List <NamespaceEntry> ();
                for (int i = 0; i < count_ns; i++)
                {
                    namespaces.Add(new NamespaceEntry(file, reader));
                }

                reader.BaseStream.Position = old_pos;
            }
        }