Procházet zdrojové kódy

Check in latest version to fix build errors

svn path=/trunk/mcs/; revision=1814
Daniel Weber před 24 roky
rodič
revize
e59091843f
1 změnil soubory, kde provedl 66 přidání a 2 odebrání
  1. 66 2
      mcs/class/System.XML/System.Xml/XmlInputSource.cs

+ 66 - 2
mcs/class/System.XML/System.Xml/XmlInputSource.cs

@@ -27,6 +27,14 @@ namespace System.Xml
 
 		private bool FLastCharWasCR;
 
+		// locator
+		int FColumnNumber;
+		int FStartColumnNumber;
+		int FStartLineNumber;
+		bool FLastWCharWasLF;
+		int FLineNumber;
+		bool FPieceEndSet;
+
 		// Buffer storage for UTF-8 surrogates
 		// see http://www.ietf.org/rfc/rfc2279.txt for a complete description of UTF-8 encoding
 		private int FLastUcs4;				
@@ -86,6 +94,26 @@ namespace System.Xml
 			}
 		}
 
+		public int columnNumber
+		{
+			get { return FColumnNumber; }
+		}
+
+		public int lineNumber
+		{
+			get { return FLineNumber; }
+		}
+
+		public int startColumnNumber
+		{
+			get { return FStartColumnNumber; }
+		}
+		
+		public int startLineNumber
+		{
+			get { return FStartLineNumber; }
+		}
+
 		// private methods
 		//===========================================================================
 		/// <summary>
@@ -263,6 +291,35 @@ namespace System.Xml
 			}
 		}
 		
+		private void evaluate(char c)
+		{
+			if (FLastWCharWasLF)
+			{
+				FLineNumber++;
+				FLastWCharWasLF = false;
+				FColumnNumber = 1;
+			}
+			else
+				FColumnNumber++;
+
+			if (c == (char) 10 )
+				FLastWCharWasLF = true;
+
+			if (FPieceEndSet)
+				pieceStart();
+		}
+
+		public void pieceEnd()
+		{
+			FPieceEndSet = true;
+		}
+
+		public void pieceStart()
+		{
+			FStartColumnNumber = FColumnNumber;
+			FStartLineNumber =   FLineNumber;
+			FPieceEndSet = false;
+		}
 
 		/// <summary>
 		/// Return true if input stream is at EOF.
@@ -491,9 +548,9 @@ namespace System.Xml
 			}
 			else
 				FLastCharWasCR = false;
+			  
+			evaluate(retval);
 			return retval;
-  
-			//  if assigned(locator) then locator.evaluate(dest);
 		}
 
 		/// <summary>
@@ -517,6 +574,13 @@ namespace System.Xml
 					FStream.Seek(0, SeekOrigin.Begin);
 					break;
 			}
+
+			FColumnNumber =      0;
+			FLineNumber =        0;
+			FStartColumnNumber = 0;
+			FStartLineNumber =   0;
+			FLastWCharWasLF = true;
+			pieceEnd();
 		}
         
 /*