| /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under |
| * the terms of the Common Public License v1.0 which accompanies this distribution, |
| * and is available at http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * $Id: IOptsParser.java,v 1.1.1.1 2004/05/09 16:57:56 vlad_r Exp $ |
| */ |
| package com.vladium.util.args; |
| |
| import java.io.PrintWriter; |
| |
| // ---------------------------------------------------------------------------- |
| /** |
| * @author Vlad Roubtsov, (C) 2002 |
| */ |
| public |
| interface IOptsParser |
| { |
| // public: ................................................................ |
| |
| int SHORT_USAGE = 1; |
| int DETAILED_USAGE = 2; |
| |
| interface IOpt |
| { |
| String getName (); |
| String getCanonicalName (); |
| |
| String getPatternPrefix (); |
| |
| int getValueCount (); |
| String getFirstValue (); |
| String [] getValues (); |
| |
| } // end of interface |
| |
| |
| interface IOpts |
| { |
| /** |
| * 0: none, 1: short, 2: detailed |
| * |
| * @return |
| */ |
| int usageRequestLevel (); |
| void error (PrintWriter out, int width); |
| |
| IOpt [] getOpts (); |
| boolean hasArg (String name); |
| |
| IOpt [] getOpts (String pattern); |
| |
| /** |
| * |
| * @return [never null, could be empty] |
| */ |
| String [] getFreeArgs (); |
| |
| } // end of interface |
| |
| void usage (PrintWriter out, int level, int width); |
| IOpts parse (String [] args); |
| |
| abstract class Factory |
| { |
| // TODO: pass short/long usage opt names in? |
| |
| public static IOptsParser create (final String metadataResourceName, final ClassLoader loader, |
| final String msgPrefix, final String [] usageOpts) |
| { |
| return new OptsParser (metadataResourceName, loader, msgPrefix, usageOpts); |
| } |
| |
| } // end of nested class |
| |
| } // end of interface |
| // ---------------------------------------------------------------------------- |