ParseOptions.java.txt
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:3k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /*$Id: ParseOptions.java,v 1.4 2002/09/09 05:38:07 parasuraman Exp $*/
  2. /*
  3.  * @(#)ParseOptions.java
  4.  * Copyright (c) 1996-2003 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  *
  7.  * Permission to use, copy, modify, and distribute this software
  8.  * and its documentation without fee is hereby granted provided
  9.  * that this copyright notice appears in all copies.
  10.  *
  11.  * ADVENTNET, INC. MAKES NO REPRESENTATIONS OR WARRANTIES  ABOUT THE
  12.  * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
  13.  * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
  14.  * FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  ADVENTNET, INC. SHALL 
  15.  * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
  16.  * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE  OR ITS DERIVATIVES.
  17.  */
  18. import java.lang.*;
  19. import java.util.*;
  20. import java.net.*;
  21. public class ParseOptions {
  22. /** The remaining Args after parsing options */
  23.   public String remArgs[]; 
  24.   public String usage_string = null;
  25.   String none = "None";  // to allow for no string attached
  26.   String option = null; // To help with option processing
  27.   int i =0, j=0;        // To help with option processing
  28. /** 
  29.  *  Parses options and sets values according to options. 
  30.  *  options[] is an array of options and values[] is the
  31.  *  returned array of string values.  If options[i] has no
  32.  *  associated string, set values[i] = "None" before calling this.
  33.  *  The usage string must be supplied by the user.
  34.  *  Any remaining arguments are stored in remArgs[]
  35.  */  
  36.   public ParseOptions(String args[], String options[], 
  37. String values[], String usage) {
  38.     Vector remaining = new Vector();  // to store remaining arguments
  39.     usage_string = usage;
  40.     for (i = 0; i < args.length; i++) { // for each arg
  41.       for (j = 0;j<options.length;j++) { // for each option
  42.         if (checkOption(args, options[j], values[j])) { // if we found option
  43. values[j] = option;
  44. break;
  45. } // end if we found option
  46.       }  // end for each option
  47.       if (j<options.length) continue; // if we've found an option, skip
  48.       remaining.addElement(args[i]);
  49.       
  50.     }// end for each arg
  51.     
  52.     remArgs = new String[remaining.size()];  // fill in remArgs[]
  53.     for (i=0;i<remaining.size();i++) 
  54. remArgs[i] = (String) remaining.elementAt(i);
  55.   }
  56. /** check the specific option */
  57.   private boolean checkOption(String args[], String opt, String value) {
  58.      if (args[i].equals(opt)) {
  59. if (!none.equals(value)) { // has a string att.
  60.   if (++i < args.length)  option = args[i];
  61.           else usage_error();
  62. } else option = "Set";  // no string att.
  63.          return true;
  64.      }
  65.      return false;
  66.   }
  67. /** Print usage error and exit */
  68.   public void usage_error() {
  69.     System.out.println("Usage: " + usage_string); 
  70.     System.exit(1);    
  71.   }
  72. }