wasCSharpSQLite – Rev
?pathlinks?
/*
* ReturnCmd.java --
*
* This file implements the Tcl "return" command.
*
* Copyright (c) 1997 Cornell University.
* Copyright (c) 1997 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and
* redistribution of this file, and for a DISCLAIMER OF ALL
* WARRANTIES.
*
* Included in SQLite3 port to C# for use in testharness only; 2008 Noah B Hart
*
* RCS @(#) $Id: ReturnCmd.java,v 1.1.1.1 1998/10/14 21:09:19 cvsadmin Exp $
*
*/
using System;
namespace tcl.lang
{
/*
* This class implements the built-in "return" command in Tcl.
*/
class ReturnCmd : Command
{
public TCL.CompletionCode cmdProc( Interp interp, TclObject[] argv )
{
interp.errorCode = null;
interp.errorInfo = null;
TCL.CompletionCode returnCode;
int i;
/*
* Note: returnCode is the value given by the -code option. Don't
* confuse this value with the compCode variable of the
* TclException thrown by this method, which is always TCL.CompletionCode.RETURN.
*/
returnCode = TCL.CompletionCode.OK;
for ( i = 1; i < argv.Length - 1; i += 2 )
{
if ( argv[i].ToString().Equals( "-code" ) )
{
if ( argv[i + 1].ToString().Equals( "ok" ) )
{
returnCode = TCL.CompletionCode.OK;
}
else
{
if ( argv[i + 1].ToString().Equals( "error" ) )
{
returnCode = TCL.CompletionCode.ERROR;
}
else
{
if ( argv[i + 1].ToString().Equals( "return" ) )
{
returnCode = TCL.CompletionCode.RETURN;
}
else
{
if ( argv[i + 1].ToString().Equals( "break" ) )
{
returnCode = TCL.CompletionCode.BREAK;
}
else
{
if ( argv[i + 1].ToString().Equals( "continue" ) )
{
returnCode = TCL.CompletionCode.CONTINUE;
}
else
{
try
{
returnCode = (TCL.CompletionCode)TclInteger.get( interp, argv[i + 1] );
}
catch ( TclException e )
{
throw new TclException( interp, "bad completion code \"" + argv[i + 1] + "\": must be ok, error, return, break, " + "continue, or an integer" );
}
}
}
}
}
}
}
else
{
if ( argv[i].ToString().Equals( "-errorcode" ) )
{
interp.errorCode = argv[i + 1].ToString();
}
else
{
if ( argv[i].ToString().Equals( "-errorinfo" ) )
{
interp.errorInfo = argv[i + 1].ToString();
}
else
{
throw new TclException( interp, "bad option \"" + argv[i] + "\": must be -code, -errorcode, or -errorinfo" );
}
}
}
}
if ( i != argv.Length )
{
interp.setResult( argv[argv.Length - 1] );
}
interp.returnCode = returnCode;
throw new TclException( TCL.CompletionCode.RETURN );
}
} // end ReturnCmd
}