Mercurial > projects > ldc
diff tango/tango/net/cluster/tina/CmdParser.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tango/tango/net/cluster/tina/CmdParser.d Fri Jan 11 17:57:40 2008 +0100 @@ -0,0 +1,78 @@ +/******************************************************************************* + + copyright: Copyright (c) 2004 Kris Bell. All rights reserved + + license: BSD style: $(LICENSE) + + version: July 2004: Initial release + + author: Kris + +*******************************************************************************/ + +module tango.net.cluster.tina.CmdParser; + +private import tango.util.ArgParser; + +private import tango.text.convert.Integer; + +private import tango.util.log.Log, + tango.util.log.Configurator; + +/****************************************************************************** + + Extends the ArgParser to support/extract common arguments + +******************************************************************************/ + +class CmdParser : ArgParser +{ + Logger log; + ushort port; + uint size; + bool help; + + /********************************************************************** + + **********************************************************************/ + + this (char[] name) + { + log = Log.getLogger (name); + + // default logging is info, not trace + log.setLevel (log.Level.Info); + } + + /********************************************************************** + + **********************************************************************/ + + void parse (char[][] args) + { + static char[] strip (char[] value) + { + if (value.length && (value[0] is '=' || value [0] is ':')) + value = value[1..$]; + return value; + } + + static int toInt (char[] value) + { + return atoi (strip(value)); + } + + bind ("-", "h", {help = true;}); + + bind ("-", "log", delegate (char[] value) + {log.setLevel(Log.level(strip(value)));}); + + bind ("-", "port", delegate (char[] value) + {port = cast(ushort) toInt (value);}); + + bind ("-", "size", delegate (char[] value) + {size = toInt (value);}); + + super.parse (args); + } +}