using System;
using System.Reflection;
using System.Runtime.InteropServices;
namespace System.Diagnostics.SymbolStore
{
/// Represents a symbol writer for managed code.
// Token: 0x02000154 RID: 340
[ComVisible(true)]
public interface ISymbolWriter
{
/// Closes and commits the symbols to the symbol store.
// Token: 0x0600110A RID: 4362
void Close();
/// Closes the current method.
// Token: 0x0600110B RID: 4363
void CloseMethod();
/// Closes the most recent namespace.
// Token: 0x0600110C RID: 4364
void CloseNamespace();
/// Closes the current lexical scope.
/// The points past the last instruction in the scope.
// Token: 0x0600110D RID: 4365
void CloseScope(int endOffset);
/// Defines a source document.
/// The object that represents the document.
/// The URL that identifies the document.
/// The document language. This parameter can be .
/// The identity of the vendor for the document language. This parameter can be .
/// The type of the document. This parameter can be .
// Token: 0x0600110E RID: 4366
ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType);
/// Defines a field in a type or a global field.
/// The metadata type or method token.
/// The field name.
/// A bitwise combination of the field attributes.
/// The field signature.
/// The address types for and .
/// The first address for the field specification.
/// The second address for the field specification.
/// The third address for the field specification.
// Token: 0x0600110F RID: 4367
void DefineField(SymbolToken parent, string name, FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3);
/// Defines a single global variable.
/// The global variable name.
/// A bitwise combination of the global variable attributes.
/// The global variable signature.
/// The address types for , , and .
/// The first address for the global variable specification.
/// The second address for the global variable specification.
/// The third address for the global variable specification.
// Token: 0x06001110 RID: 4368
void DefineGlobalVariable(string name, FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3);
/// Defines a single variable in the current lexical scope.
/// The local variable name.
/// A bitwise combination of the local variable attributes.
/// The local variable signature.
/// The address types for , , and .
/// The first address for the local variable specification.
/// The second address for the local variable specification.
/// The third address for the local variable specification.
/// The start offset for the variable. If this parameter is zero, it is ignored and the variable is defined throughout the entire scope. If the parameter is nonzero, the variable falls within the offsets of the current scope.
/// The end offset for the variable. If this parameter is zero, it is ignored and the variable is defined throughout the entire scope. If the parameter is nonzero, the variable falls within the offsets of the current scope.
// Token: 0x06001111 RID: 4369
void DefineLocalVariable(string name, FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset);
/// Defines a single parameter in the current method. The type of each parameter is taken from its position within the signature of the method.
/// The parameter name.
/// A bitwise combination of the parameter attributes.
/// The parameter signature.
/// The address types for , , and .
/// The first address for the parameter specification.
/// The second address for the parameter specification.
/// The third address for the parameter specification.
// Token: 0x06001112 RID: 4370
void DefineParameter(string name, ParameterAttributes attributes, int sequence, SymAddressKind addrKind, int addr1, int addr2, int addr3);
/// Defines a group of sequence points within the current method.
/// The document object for which the sequence points are being defined.
/// The sequence point offsets measured from the beginning of methods.
/// The document lines for the sequence points.
/// The document positions for the sequence points.
/// The document end lines for the sequence points.
/// The document end positions for the sequence points.
// Token: 0x06001113 RID: 4371
void DefineSequencePoints(ISymbolDocumentWriter document, int[] offsets, int[] lines, int[] columns, int[] endLines, int[] endColumns);
/// Sets the metadata emitter interface to associate with a writer.
/// The metadata emitter interface.
/// The file name for which the debugging symbols are written. Some writers require a file name, and others do not. If a file name is specified for a writer that does not use file names, this parameter is ignored.
/// true indicates that this is a full rebuild; false indicates that this is an incremental compilation.
// Token: 0x06001114 RID: 4372
void Initialize(IntPtr emitter, string filename, bool fFullBuild);
/// Opens a method to place symbol information into.
/// The metadata token for the method to be opened.
// Token: 0x06001115 RID: 4373
void OpenMethod(SymbolToken method);
/// Opens a new namespace.
/// The name of the new namespace.
// Token: 0x06001116 RID: 4374
void OpenNamespace(string name);
/// Opens a new lexical scope in the current method.
/// An opaque scope identifier that can be used with to define the start and end offsets of a scope at a later time. In this case, the offsets passed to and are ignored. A scope identifier is valid only in the current method.
/// The offset, in bytes, from the beginning of the method to the first instruction in the lexical scope.
// Token: 0x06001117 RID: 4375
int OpenScope(int startOffset);
/// Specifies the true start and end of a method within a source file. Use to specify the extent of a method, independent of the sequence points that exist within the method.
/// The document that contains the starting position.
/// The starting line number.
/// The starting column.
/// The document that contains the ending position.
/// The ending line number.
/// The ending column number.
// Token: 0x06001118 RID: 4376
void SetMethodSourceRange(ISymbolDocumentWriter startDoc, int startLine, int startColumn, ISymbolDocumentWriter endDoc, int endLine, int endColumn);
/// Defines the offset range for the specified lexical scope.
/// The identifier of the lexical scope.
/// The byte offset of the beginning of the lexical scope.
/// The byte offset of the end of the lexical scope.
// Token: 0x06001119 RID: 4377
void SetScopeRange(int scopeID, int startOffset, int endOffset);
/// Defines an attribute when given the attribute name and the attribute value.
/// The metadata token for which the attribute is being defined.
/// The attribute name.
/// The attribute value.
// Token: 0x0600111A RID: 4378
void SetSymAttribute(SymbolToken parent, string name, byte[] data);
/// Sets the underlying ISymUnmanagedWriter (the corresponding unmanaged interface) that a managed uses to emit symbols.
/// A pointer to code that represents the underlying writer.
// Token: 0x0600111B RID: 4379
void SetUnderlyingWriter(IntPtr underlyingWriter);
/// Identifies the user-defined method as the entry point for the current module.
/// The metadata token for the method that is the user entry point.
// Token: 0x0600111C RID: 4380
void SetUserEntryPoint(SymbolToken entryMethod);
/// Specifies that the given, fully qualified namespace name is used within the open lexical scope.
/// The fully qualified name of the namespace.
// Token: 0x0600111D RID: 4381
void UsingNamespace(string fullName);
}
}