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; }
}
}