Merge pull request #3549 from lewurm/arm64-icache-big-little-fix
[mono.git] / mcs / tools / pdb2mdb / Interfaces.cs
1 using System;
2 using System.Collections.Generic;
3
4 namespace Microsoft.Cci {
5
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; }
14
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; }
19   }
20
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 {
26
27     /// <summary>
28     /// Zero or more used namespaces. These correspond to using clauses in C#.
29     /// </summary>
30     IEnumerable<IUsedNamespace> UsedNamespaces { get; }
31
32   }
33
34
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; }
43
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; }
48   }
49
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;
60     }
61
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;
70     }
71
72     /// <summary>
73     /// The string value corresponding to this name.
74     /// </summary>
75     string Value { get; }
76   }
77 }