1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. 2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under 4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution, 5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html 6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: IOptsParser.java,v 1.1.1.1 2004/05/09 16:57:56 vlad_r Exp $ 8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.util.args; 10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport java.io.PrintWriter; 12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ---------------------------------------------------------------------------- 14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/** 15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2002 16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic 18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectinterface IOptsParser 19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{ 20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // public: ................................................................ 21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project int SHORT_USAGE = 1; 23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project int DETAILED_USAGE = 2; 24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project interface IOpt 26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String getName (); 28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String getCanonicalName (); 29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String getPatternPrefix (); 31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project int getValueCount (); 33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String getFirstValue (); 34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String [] getValues (); 35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of interface 37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project interface IOpts 40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project /** 42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 0: none, 1: short, 2: detailed 43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @return 45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project int usageRequestLevel (); 47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void error (PrintWriter out, int width); 48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project IOpt [] getOpts (); 50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project boolean hasArg (String name); 51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project IOpt [] getOpts (String pattern); 53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project /** 55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * 56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @return [never null, could be empty] 57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */ 58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project String [] getFreeArgs (); 59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of interface 61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project void usage (PrintWriter out, int level, int width); 63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project IOpts parse (String [] args); 64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project abstract class Factory 66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project // TODO: pass short/long usage opt names in? 68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project public static IOptsParser create (final String metadataResourceName, final ClassLoader loader, 70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project final String msgPrefix, final String [] usageOpts) 71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project { 72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project return new OptsParser (metadataResourceName, loader, msgPrefix, usageOpts); 73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } 74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project } // end of nested class 76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project 77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of interface 78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------