use MOONLIGHT symbol
[mcs.git] / tools / pdb2mdb / Interfaces.cs
blob82561fbcc0481852fea7caef165e1a70379bdf78
1 using System;
2 using System.Collections.Generic;
4 namespace Microsoft.Cci {
6 /// <summary>
7 /// A range of CLR IL operations that comprise a lexical scope, specified as an IL offset and a length.
8 /// </summary>
9 public interface ILocalScope {
10 /// <summary>
11 /// The offset of the first operation in the scope.
12 /// </summary>
13 uint Offset { get; }
15 /// <summary>
16 /// The length of the scope. Offset+Length equals the offset of the first operation outside the scope, or equals the method body length.
17 /// </summary>
18 uint Length { get; }
21 /// <summary>
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.
24 /// </summary>
25 public interface INamespaceScope {
27 /// <summary>
28 /// Zero or more used namespaces. These correspond to using clauses in C#.
29 /// </summary>
30 IEnumerable<IUsedNamespace> UsedNamespaces { get; }
35 /// <summary>
36 /// A namespace that is used (imported) inside a namespace scope.
37 /// </summary>
38 public interface IUsedNamespace {
39 /// <summary>
40 /// An alias for a namespace. For example the "x" of "using x = y.z;" in C#. Empty if no alias is present.
41 /// </summary>
42 IName Alias { get; }
44 /// <summary>
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#.
46 /// </summary>
47 IName NamespaceName { get; }
50 /// <summary>
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.
52 /// </summary>
53 public interface IName {
54 /// <summary>
55 /// An integer that is unique within the pool from which the name instance has been allocated. Useful as a hashtable key.
56 /// </summary>
57 int UniqueKey {
58 get;
59 //^ ensures result > 0;
62 /// <summary>
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.
66 /// </summary>
67 int UniqueKeyIgnoringCase {
68 get;
69 //^ ensures result > 0;
72 /// <summary>
73 /// The string value corresponding to this name.
74 /// </summary>
75 string Value { get; }