for (int i = 0; i < args.length; ++i)
{
String lcArg = args[i].toLowerCase ();
if (lcArg.charAt (0) != '-' && lcArg.charAt (0) != '/')
throw new InvalidArgument (args[i]);
if (lcArg.charAt (0) == '-' ) {
lcArg = lcArg.substring (1);
}
// Proxy options; default is -fclient.
if (lcArg.startsWith ("f"))
{
// If the command line had '-f client', make it '-fclient'
if (lcArg.equals ("f"))
lcArg = 'f' + args[++i].toLowerCase ();
// Determine whether to emit bindings for client, server or both; and
// whether to emit delegate-style (TIE) rather than derived-style
// skeletons, which are the default.
if (lcArg.equals ("fclient"))
{
emit = ((emit == Server || emit == All) ? All : Client);
}
else if (lcArg.equals ("fserver"))
{
emit = ((emit == Client || emit == All) ? All : Server);
TIEServer = false;
}
else if (lcArg.equals ("fall"))
{
emit = All;
TIEServer = false;
//Should be removed and incorporated in the clause below
// POAServer = true;
}
else if (lcArg.equals ("fservertie"))
{
emit = ((emit == Client || emit == All) ? All : Server);
TIEServer = true;
}
else if (lcArg.equals ("falltie"))
{
emit = All;
TIEServer = true;
}
else
i = collectUnknownArg (args, i, unknownArgs);
}
else if (lcArg.equals ("pkgtranslate"))
{
if (i + 2 >= args.length)
throw new InvalidArgument( args[i] ) ;
String orig = args[++i] ;
String trans = args[++i] ;
checkPackageNameValid( orig ) ;
checkPackageNameValid( trans ) ;
if (orig.equals( "org" ) || orig.startsWith( "org.omg" ))
throw new InvalidArgument( args[i] ) ;
orig = orig.replace( '.', '/' ) ;
trans = trans.replace( '.', '/' ) ;
packageTranslation.put( orig, trans ) ;
}
// Package prefix
else if (lcArg.equals ("pkgprefix"))
{
if (i + 2 >= args.length)
throw new InvalidArgument (args[i]);
String type = args[++i];
String pkg = args[++i];
checkPackageNameValid( type ) ;
checkPackageNameValid( pkg ) ;
packages.put (type, pkg);
}
// Target directory
else if (lcArg.equals ("td")) // <f46838.4>
{
if (i + 1 >= args.length)
throw new InvalidArgument (args[i]);
String trgtDir = args[++i];
if (trgtDir.charAt (0) == '-')
throw new InvalidArgument (args[i - 1]);
else
{
targetDir = trgtDir.replace ('/', File.separatorChar);
if (targetDir.charAt (targetDir.length () - 1) != File.separatorChar)
targetDir = targetDir + File.separatorChar;
}
}
// Separator
else if (lcArg.equals ("sep"))
{
if (i + 1 >= args.length)
throw new InvalidArgument (args[i]);
separator = args[++i];
}
// POA flag ?
else if (lcArg.equals ("oldimplbase")){
POAServer = false;
}
else if (lcArg.equals("skeletonname")){
if (i + 1 >= args.length)
throw new InvalidArgument (args[i]);
skeletonPattern = args[++i];
}
else if (lcArg.equals("tiename")){
if (i + 1 >= args.length)
throw new InvalidArgument (args[i]);
tiePattern = args[++i];
}
else if (lcArg.equals("localoptimization")) {
LocalOptimization = true;
}
else i = collectUnknownArg (args, i, unknownArgs);
}
// Encountered unknown arguments?
if (unknownArgs.size () > 0)
{
String [] otherArgs = new String [unknownArgs.size ()];
unknownArgs.copyInto (otherArgs);
// Throws InvalidArgument by default
super.parseOtherArgs (otherArgs, properties);
}
setDefaultEmitter(); // d57482 <klr>
setNameModifiers( skeletonPattern, tiePattern ) ;
}
catch (ArrayIndexOutOfBoundsException e)
{
// If there is any array indexing problem, it is probably
// because the qualifier on the last argument is missing.
// Report that this last argument is invalid.
throw new InvalidArgument (args[args.length - 1]);
}
} // parseOtherArgs