/* Generated automatically by jlpp - do not edit. */ #include static jakelib::lang::String* jakelib2_strings[] = {null, null, null, null, null, null, null, null, null, null}; // "jakelib.lang.Number" static jchar chars_jakelib2_str_0[] = {106,97,107,101,108,105,98,46,108,97,110,103,46,78,117,109,98,101,114}; // "Cannot format given Object as a Number" static jchar chars_jakelib2_str_1[] = {67,97,110,110,111,116,32,102,111,114,109,97,116,32,103,105,118,101,110,32,79,98,106,101,99,116,32,97,115,32,97,32,78,117,109,98,101,114}; // "jakelib.text.NumberFormat" static jchar chars_jakelib2_str_2[] = {106,97,107,101,108,105,98,46,116,101,120,116,46,78,117,109,98,101,114,70,111,114,109,97,116}; // "currencyFormat" static jchar chars_jakelib2_str_3[] = {99,117,114,114,101,110,99,121,70,111,114,109,97,116}; // "$#,##0.00;($#,##0.00)" static jchar chars_jakelib2_str_4[] = {36,35,44,35,35,48,46,48,48,59,40,36,35,44,35,35,48,46,48,48,41}; // "numberFormat" static jchar chars_jakelib2_str_5[] = {110,117,109,98,101,114,70,111,114,109,97,116}; // "#,##0.###" static jchar chars_jakelib2_str_6[] = {35,44,35,35,48,46,35,35,35}; // "percentFormat" static jchar chars_jakelib2_str_7[] = {112,101,114,99,101,110,116,70,111,114,109,97,116}; // "#,##0%" static jchar chars_jakelib2_str_8[] = {35,44,35,35,48,37}; // "couldn't parse number" static jchar chars_jakelib2_str_9[] = {99,111,117,108,100,110,39,116,32,112,97,114,115,101,32,110,117,109,98,101,114}; #line 1 "text/NumberFormat.jlc" // -*- c++ -*- /* * Jakelib2 - General purpose C++ library * Copyright (C) 2001 Florian Wolff (florian@donuz.de) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id: NumberFormat.jlc,v 1.14 2003/09/27 08:10:28 florian Exp $ */ #include "jakelib2.h" #include "jakelib2/text/NumberFormat.h" #include "jakelib2/text/DecimalFormat.h" using namespace jakelib::lang; using namespace jakelib::text; using namespace jakelib::util; JAKELIB_IMPLEMENT_CLASS("jakelib.text.NumberFormat", NumberFormat, Format); jint NumberFormat::INTEGER_FIELD = 0; jint NumberFormat::FRACTION_FIELD = 1; /*****************************************************************************\ * NumberFormat | *****************************************************************************/ NumberFormat::NumberFormat() { } /*****************************************************************************\ * format | *****************************************************************************/ String *NumberFormat::format(jlong number) { StringBuffer sbuf; format(number, &sbuf, null); return sbuf.toString(); } StringBuffer *NumberFormat::format(Object *obj, StringBuffer *sbuf, FieldPosition *pos) { if (obj->instanceOf(JAKELIB_ONDEMAND(jakelib2_strings[0], new jakelib::lang::String(chars_jakelib2_str_0, 0, 19)))) { return format(((Number *) obj)->doubleValue(), sbuf, pos); } else { throw new IllegalArgumentException(JAKELIB_ONDEMAND(jakelib2_strings[1], new jakelib::lang::String(chars_jakelib2_str_1, 0, 38)) ->plus( JAKELIB_AT2("jakelib.text.NumberFormat.format"))); } } String *NumberFormat::format(jdouble number) { StringBuffer *sbuf = new StringBuffer(50); format(number, sbuf, null); return sbuf->toString(); } /*****************************************************************************\ * equals | *****************************************************************************/ jboolean NumberFormat::equals(Object * obj) { if (!(obj->instanceOf(JAKELIB_ONDEMAND(jakelib2_strings[2], new jakelib::lang::String(chars_jakelib2_str_2, 0, 25))))) return false; NumberFormat *nf = (NumberFormat *) obj; return (groupingUsed == nf->groupingUsed && maximumFractionDigits == nf->maximumFractionDigits && maximumIntegerDigits == nf->maximumIntegerDigits && minimumFractionDigits == nf->minimumFractionDigits && minimumIntegerDigits == nf->minimumIntegerDigits && parseIntegerOnly == nf->parseIntegerOnly); } /*****************************************************************************\ * getAvailableLocales | *****************************************************************************/ Locales *NumberFormat::getAvailableLocales() { Locales *list = new Locales((jint) 1); list->set(0, Locale::US); return list; } /*****************************************************************************\ * computeInstance | *****************************************************************************/ NumberFormat *NumberFormat::computeInstance(Locale * loc, String * resource, String * def) { DecimalFormatSyms *dfs = new DecimalFormatSyms(loc); return new DecimalFormat(def, dfs); } /*****************************************************************************\ * getCurrencyInstance | *****************************************************************************/ NumberFormat *NumberFormat::getCurrencyInstance() { return getCurrencyInstance(jakelib::util::Locale::getDefault()); } NumberFormat *NumberFormat::getCurrencyInstance(jakelib::util::Locale * loc) { return computeInstance(loc, JAKELIB_ONDEMAND(jakelib2_strings[3], new jakelib::lang::String(chars_jakelib2_str_3, 0, 14)), JAKELIB_ONDEMAND(jakelib2_strings[4], new jakelib::lang::String(chars_jakelib2_str_4, 0, 21))); } /*****************************************************************************\ * getInstance | *****************************************************************************/ NumberFormat *NumberFormat::getInstance() { return getInstance(jakelib::util::Locale::getDefault()); } NumberFormat *NumberFormat::getInstance(jakelib::util::Locale * loc) { // For now always return a number instance. return getNumberInstance(loc); } /*****************************************************************************\ * getMaximumFractionDigits | *****************************************************************************/ jint NumberFormat::getMaximumFractionDigits() { return maximumFractionDigits; } /*****************************************************************************\ * getMaximumIntegerDigits | *****************************************************************************/ jint NumberFormat::getMaximumIntegerDigits() { return maximumIntegerDigits; } /*****************************************************************************\ * getMaximumFractionDigits | *****************************************************************************/ jint NumberFormat::getMinimumFractionDigits() { return minimumFractionDigits; } /*****************************************************************************\ * getMinimumIntegerDigits | *****************************************************************************/ jint NumberFormat::getMinimumIntegerDigits() { return minimumIntegerDigits; } /*****************************************************************************\ * getNumberInstance | *****************************************************************************/ NumberFormat *NumberFormat::getNumberInstance() { return getNumberInstance(jakelib::util::Locale::getDefault()); } NumberFormat *NumberFormat::getNumberInstance(jakelib::util::Locale * loc) { return computeInstance(loc, JAKELIB_ONDEMAND(jakelib2_strings[5], new jakelib::lang::String(chars_jakelib2_str_5, 0, 12)), JAKELIB_ONDEMAND(jakelib2_strings[6], new jakelib::lang::String(chars_jakelib2_str_6, 0, 9))); } /*****************************************************************************\ * getPercentInstance | *****************************************************************************/ NumberFormat *NumberFormat::getPercentInstance() { return getPercentInstance(jakelib::util::Locale::getDefault()); } NumberFormat *NumberFormat::getPercentInstance(jakelib::util::Locale * loc) { return computeInstance(loc, JAKELIB_ONDEMAND(jakelib2_strings[7], new jakelib::lang::String(chars_jakelib2_str_7, 0, 13)), JAKELIB_ONDEMAND(jakelib2_strings[8], new jakelib::lang::String(chars_jakelib2_str_8, 0, 6))); } /*****************************************************************************\ * hashCode | *****************************************************************************/ jint NumberFormat::hashCode() { jint hash = 0; hash ^= (maximumFractionDigits + maximumIntegerDigits + minimumFractionDigits + minimumIntegerDigits); if (groupingUsed) { hash ^= 0xf0f0; } if (parseIntegerOnly) { hash ^= 0x0f0f; } return hash; } /*****************************************************************************\ * isGroupingUsed | *****************************************************************************/ jboolean NumberFormat::isGroupingUsed() { return groupingUsed; } /*****************************************************************************\ * isParseIntegerOnly | *****************************************************************************/ jboolean NumberFormat::isParseIntegerOnly() { return parseIntegerOnly; } /*****************************************************************************\ * parse | *****************************************************************************/ Number *NumberFormat::parse(String * sourceStr) { ParsePosition *pp = new ParsePosition(0); Number *r = parse(sourceStr, pp); if (r == null) { jint index = pp->getErrorIndex(); if (index < 0) index = pp->getIndex(); throw new ParseException(JAKELIB_ONDEMAND(jakelib2_strings[9], new jakelib::lang::String(chars_jakelib2_str_9, 0, 21)) ->plus( JAKELIB_AT2("jakelib.text.NumberFormat.parse")), index); } return r; } /*****************************************************************************\ * parseObject | *****************************************************************************/ Object *NumberFormat::parseObject(String * sourceStr, ParsePosition * pos) { return parse(sourceStr, pos); } /*****************************************************************************\ * setGroupingUsed | *****************************************************************************/ void NumberFormat::setGroupingUsed(jboolean newValue) { groupingUsed = newValue; } /*****************************************************************************\ * setMaximumFractionDigits | *****************************************************************************/ void NumberFormat::setMaximumFractionDigits(jint newValue) { maximumFractionDigits = newValue; if (getMinimumFractionDigits() > maximumFractionDigits) setMinimumFractionDigits(maximumFractionDigits); } /*****************************************************************************\ * setMaximumIntegerDigits | *****************************************************************************/ void NumberFormat::setMaximumIntegerDigits(jint newValue) { maximumIntegerDigits = newValue; if (getMinimumIntegerDigits() > maximumIntegerDigits) setMinimumIntegerDigits(maximumIntegerDigits); } /*****************************************************************************\ * setMinimumFractionDigits | *****************************************************************************/ void NumberFormat::setMinimumFractionDigits(jint newValue) { minimumFractionDigits = newValue; if (getMaximumFractionDigits() < minimumFractionDigits) setMaximumFractionDigits(minimumFractionDigits); } /*****************************************************************************\ * setMinimumIntegerDigits | *****************************************************************************/ void NumberFormat::setMinimumIntegerDigits(jint newValue) { minimumIntegerDigits = newValue; if (getMaximumIntegerDigits() < minimumIntegerDigits) setMaximumIntegerDigits(minimumIntegerDigits); } /*****************************************************************************\ * setParseIntegerOnly | *****************************************************************************/ void NumberFormat::setParseIntegerOnly(jboolean value) { parseIntegerOnly = value; }