//--------------------------------------------------------------------- public InputVariableException(InputVariable var, string message, Exception exception) : base(message, exception) { Variable = var; }
//--------------------------------------------------------------------- private bool ReadVariable(InputVariable var, bool optional) { if (var == null) { throw new System.ArgumentNullException(); } if (VariableNameMatches(var.Name, optional)) { // Read the variable's value StringReader strReader = new StringReader(textAfterName); try { var.ReadValue(strReader); } catch (InputVariableException exc) { throw new LineReaderException(reader, exc); } TextReader.SkipWhitespace(strReader); string textAfterValue = strReader.ReadToEnd(); if (textAfterValue.Length == 0) { return(true); } string message = string.Format("Extra text after the value for \"{0}\"", var.Name); throw ExtraTextException(message, textAfterValue); } return(false); }
//--------------------------------------------------------------------- public InputVariableException(InputVariable var, string message, params object[] args) : base(string.Format(message, args)) { Variable = var; }
//--------------------------------------------------------------------- /// <summary> /// Reads the name and value of an input variable from the current /// line. /// </summary> /// <exception cref="LineReaderException"> /// </exception> /// <remarks> /// After a call to this method, the property CurrentLine will refer /// to the next data line after the line with the variable that was /// just read. The caller can perform additional error-checking on /// the variable's value after this method returns. If the caller /// detects an error, it should throw an InputValueException or /// an InputVariableException. /// </remarks> protected void ReadVar(InputVariable var) { Debug.Assert(inputLine != null); inputLine.ReadVar(var); SetCurrentVar(var); GetNextLine(); }
//--------------------------------------------------------------------- /// <summary> /// Reads the value of an input variable from the current line. /// </summary> /// <exception cref="InputValueException"> /// </exception> /// <remarks> /// This method is used for reading column values from a table. The /// current line is a row in the table. /// </remarks> protected void ReadValue(InputVariable var, StringReader currentLine) { Require.ArgumentNotNull(var); Require.ArgumentNotNull(currentLine); var.ReadValue(currentLine); SetCurrentVar(var); }
//--------------------------------------------------------------------- private void SetCurrentVar(InputVariable var) { currentVar = var; if (inputLine != null) { currentVarLineNum = inputLine.Number; } else { currentVarLineNum = 0; } }
//--------------------------------------------------------------------- /// <summary> /// Reads the name and value of an optional input variable from the /// current line. /// </summary> /// <returns> /// true if the name and value were read; false if the name on the /// current line does not match the variable's name. /// </returns> /// <exception cref="LineReaderException"> /// </exception> /// <remarks> /// If this method return true, the property CurrentLine will refer /// to the next data line after the line with the variable that was /// just read. The caller can perform additional error-checking on /// the variable's value after this method returns. If the caller /// detects an error, it should throw an InputValueException or /// an InputVariableException. /// </remarks> protected bool ReadOptionalVar(InputVariable var) { Debug.Assert(inputLine != null); if (inputLine.ReadOptionalVar(var)) { SetCurrentVar(var); GetNextLine(); return(true); } else { return(false); } }
//--------------------------------------------------------------------- /// <summary> /// Reads the name and value for an optional InputVariable. /// </summary> public bool ReadOptionalVar(InputVariable var) { return(ReadVariable(var, true)); }
//--------------------------------------------------------------------- /// <summary> /// Reads the name and value for an InputVariable. /// </summary> public void ReadVar(InputVariable var) { ReadVariable(var, false); }