using System; using System.Collections.Generic; namespace Microsoft.Cci { /// /// A range of CLR IL operations that comprise a lexical scope, specified as an IL offset and a length. /// public interface ILocalScope { /// /// The offset of the first operation in the scope. /// uint Offset { get; } /// /// The length of the scope. Offset+Length equals the offset of the first operation outside the scope, or equals the method body length. /// uint Length { get; } } /// /// A description of the lexical scope in which a namespace type has been nested. This scope is tied to a particular /// method body, so that partial types can be accommodated. /// public interface INamespaceScope { /// /// Zero or more used namespaces. These correspond to using clauses in C#. /// IEnumerable UsedNamespaces { get; } } /// /// A namespace that is used (imported) inside a namespace scope. /// public interface IUsedNamespace { /// /// An alias for a namespace. For example the "x" of "using x = y.z;" in C#. Empty if no alias is present. /// IName Alias { get; } /// /// The name of a namepace that has been aliased. For example the "y.z" of "using x = y.z;" or "using y.z" in C#. /// IName NamespaceName { get; } } /// /// The name of an entity. Typically name instances come from a common pool. Within the pool no two distinct instances will have the same Value or UniqueKey. /// public interface IName { /// /// An integer that is unique within the pool from which the name instance has been allocated. Useful as a hashtable key. /// int UniqueKey { get; //^ ensures result > 0; } /// /// An integer that is unique within the pool from which the name instance has been allocated. Useful as a hashtable key. /// All name instances in the pool that have the same string value when ignoring the case of the characters in the string /// will have the same key value. /// int UniqueKeyIgnoringCase { get; //^ ensures result > 0; } /// /// The string value corresponding to this name. /// string Value { get; } } }