Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/mbas/location.cs')
-rw-r--r--mcs/mbas/location.cs151
1 files changed, 0 insertions, 151 deletions
diff --git a/mcs/mbas/location.cs b/mcs/mbas/location.cs
deleted file mode 100644
index 1b32f32de6e..00000000000
--- a/mcs/mbas/location.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-// location.cs: Keeps track of the location of source code entity
-//
-// Author:
-// Miguel de Icaza
-//
-// (C) 2001 Ximian, Inc.
-//
-
-using System;
-using System.Collections;
-using System.Diagnostics.SymbolStore;
-
-namespace Mono.CSharp {
- /// <summary>
- /// Keeps track of the location in the program
- /// </summary>
- ///
- /// <remarks>
- /// This uses a compact representation and a couple of auxiliary
- /// structures to keep track of tokens to (file,line) mappings.
- ///
- /// We could probably also keep track of columns by storing those
- /// in 8 bits (and say, map anything after char 255 to be `255+').
- /// </remarks>
- public struct Location {
- public int token;
-
- static Hashtable map;
- static Hashtable sym_docs;
- static ArrayList list;
- static int global_count;
- static int module_base;
-
- public readonly static Location Null;
-
- static Location ()
- {
- map = new Hashtable ();
- list = new ArrayList ();
- sym_docs = new Hashtable ();
- global_count = 0;
- module_base = 0;
- Null.token = -1;
- }
-
- static public void Push (string name)
- {
- map.Remove (global_count);
- map.Add (global_count, name);
- list.Add (global_count);
- module_base = global_count;
- }
-
- public Location (int row)
- {
- if (row < 0)
- token = -1;
- else {
- token = module_base + row;
- if (global_count < token)
- global_count = token;
- }
- }
-
- public override string ToString ()
- {
- return Name + ": (" + Row + ")";
- }
-
- /// <summary>
- /// Whether the Location is Null
- /// </summary>
- static public bool IsNull (Location l)
- {
- return l.token == -1;
- }
-
- public string Name {
- get {
- int best = 0;
-
- if (token < 0)
- return "Internal";
-
- foreach (int b in list){
- if (token > b)
- best = b;
- }
- return (string) map [best];
- }
- }
-
- public int Row {
- get {
- int best = 0;
-
- if (token < 0)
- return 1;
-
- foreach (int b in list){
- if (token > b)
- best = b;
- }
- return token - best;
- }
- }
-
- // The ISymbolDocumentWriter interface is used by the symbol writer to
- // describe a single source file - for each source file there's exactly
- // one corresponding ISymbolDocumentWriter instance.
- //
- // This class has an internal hash table mapping source document names
- // to such ISymbolDocumentWriter instances - so there's exactly one
- // instance per document.
- //
- // This property returns the ISymbolDocumentWriter instance which belongs
- // to the location's source file.
- //
- // If we don't have a symbol writer, this property is always null.
- public ISymbolDocumentWriter SymbolDocument {
- get {
- ISymbolWriter sw = CodeGen.SymbolWriter;
- ISymbolDocumentWriter doc;
-
- if (token < 0)
- return null;
-
- // If we don't have a symbol writer, return null.
- if (sw == null)
- return null;
-
- if (sym_docs.Contains (Name))
- // If we already created an ISymbolDocumentWriter
- // instance for this document, return it.
- doc = (ISymbolDocumentWriter) sym_docs [Name];
- else {
- // Create a new ISymbolDocumentWriter instance and
- // store it in the hash table.
- doc = sw.DefineDocument (Name, SymLanguageType.CSharp,
- SymLanguageVendor.Microsoft,
- SymDocumentType.Text);
-
- sym_docs.Add (Name, doc);
- }
-
- return doc;
- }
- }
- }
-}