/* ============================================================================== This file is part of the JUCETICE project - Copyright 2009 by Lucio Asnaghi. JUCETICE is based around the JUCE library - "Jules' Utility Class Extensions" Copyright 2007 by Julian Storer. ------------------------------------------------------------------------------ JUCE and JUCETICE can be redistributed and/or modified under the terms of the GNU General Public License, as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. JUCE and JUCETICE are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with JUCE and JUCETICE; if not, visit www.gnu.org/licenses or write to Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ============================================================================== */ BEGIN_JUCE_NAMESPACE //============================================================================== void CommandLineTokenizer::parseCommandLine (const String& commandLine) { int section; String value, parse = commandLine.trim(); while (parse.length() > 0) { section = parse.indexOf (0, " "); if (section == -1) section = parse.length(); argv.add (parse.substring (0, section)); if (section < parse.length() ) parse = parse.substring (section+1,parse.length()).trim(); else parse = String(); } } //============================================================================== const String& CommandLineTokenizer::operator[] (const int index) const throw() { jassert (index >= 0 && index < argv.size()); return argv[index]; } const int CommandLineTokenizer::size() { return argv.size(); } //============================================================================== int CommandLineTokenizer::searchToken (const String& tokenToSearch, const bool caseSensitive) { if (caseSensitive) { for (int i = 0; i < argv.size(); i++ ) if (tokenToSearch.compare (argv[i]) == 0) return i; } else { for (int i = 0; i < argv.size(); i++ ) if (tokenToSearch.compareIgnoreCase (argv[i]) == 0) return i; } return -1; } //============================================================================== String CommandLineTokenizer::getOptionString (const String& tokenToSearch, const String& defValue, const bool caseSensitive) { int i = searchToken (tokenToSearch, caseSensitive); if (i++ < 0) return defValue; if (i >= 0 && i < argv.size()) return argv[i]; else return defValue; } bool CommandLineTokenizer::getOptionBool (const String& tokenToSearch, const bool defValue, const bool caseSensitive) { int i = searchToken (tokenToSearch, caseSensitive); if (i++ < 0) return defValue; if (i >= 0 && i < argv.size()) return argv[i].getIntValue() == 0 ? false : true; else return defValue; } int CommandLineTokenizer::getOptionInt (const String& tokenToSearch, const int defValue, const bool caseSensitive) { int i = searchToken (tokenToSearch, caseSensitive); if (i++ < 0) return defValue; if (i >= 0 && i < argv.size()) return argv[i].getIntValue(); else return defValue; } double CommandLineTokenizer::getOptionDouble (const String& tokenToSearch, const double defValue, const bool caseSensitive) { int i = searchToken (tokenToSearch, caseSensitive); if (i++ < 0) return defValue; if (i >= 0 && i < argv.size()) return argv[i].getDoubleValue(); else return defValue; } END_JUCE_NAMESPACE