/* 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 // ----------------------------------------------------------------------------