2 using System.Collections.Generic;
4 namespace Microsoft.Cci {
7 /// A range of CLR IL operations that comprise a lexical scope, specified as an IL offset and a length.
9 public interface ILocalScope {
11 /// The offset of the first operation in the scope.
16 /// The length of the scope. Offset+Length equals the offset of the first operation outside the scope, or equals the method body length.
22 /// A description of the lexical scope in which a namespace type has been nested. This scope is tied to a particular
23 /// method body, so that partial types can be accommodated.
25 public interface INamespaceScope {
28 /// Zero or more used namespaces. These correspond to using clauses in C#.
30 IEnumerable<IUsedNamespace> UsedNamespaces { get; }
36 /// A namespace that is used (imported) inside a namespace scope.
38 public interface IUsedNamespace {
40 /// An alias for a namespace. For example the "x" of "using x = y.z;" in C#. Empty if no alias is present.
45 /// 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#.
47 IName NamespaceName { get; }
51 /// 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.
53 public interface IName {
55 /// An integer that is unique within the pool from which the name instance has been allocated. Useful as a hashtable key.
59 //^ ensures result > 0;
63 /// An integer that is unique within the pool from which the name instance has been allocated. Useful as a hashtable key.
64 /// All name instances in the pool that have the same string value when ignoring the case of the characters in the string
65 /// will have the same key value.
67 int UniqueKeyIgnoringCase {
69 //^ ensures result > 0;
73 /// The string value corresponding to this name.