final void setBaseValue ( long newBaseValue ) { // set the base value baseValue = newBaseValue ; radix = 10 ; // if this isn't a special rule, recalculate the radix and exponent // (the radix always defaults to 10; if it's supposed to be something // else, it's cleaned up by the caller and the exponent is // recalculated again-- the only function that does this is // NFRule.parseRuleDescriptor() ) if ( baseValue >= 1 ) { exponent = expectedExponent ( ) ; // this function gets called on a fully-constructed rule whose // description didn't specify a base value. This means it // has substitutions, and some substitutions hold on to copies // of the rule's divisor. Fix their copies of the divisor. if ( sub1 != null ) { sub1 . setDivisor ( radix , exponent ) ; } if ( sub2 != null ) { sub2 . setDivisor ( radix , exponent ) ; } } else { // if this is a special rule, its radix and exponent are basically // ignored. Set them to "safe" default values exponent = 0 ; } }
Sets the rule s base value and causes the radix and exponent to be recalculated . This is used during construction when we don t know the rule s base value until after it s been constructed . It should not be used at any other time .