Patch title: Release 94 bulk changes
Abstract:
File: /pliant/language/type/number/int_extra.pli
Key:
    Removed line
    Added line
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

scope "/pliant/language/" "/pliant/install/"
module "/pliant/install/ring2.pli"


method data 'to string' options -> s
  arg uInt data ; arg Str options ; arg Str s
  if options:len=0 or data=0 or { var Int radix := options option "radix" Int ; radix=undefined }
    if data<2^(uInt:bitsize-1)
      s := 'convert to string' (cast data Int)
    else
      s := ('convert to string' data\10)+('convert to string' data%10)
  else
    check radix>=2 and radix<=36
    s := ""
    var uInt i := data
    while i<>0
      var Int d := i%(cast radix uInt)
      if d<10
        s := (character "0":0:number+d)+s
      else
        s := (character "A":0:number-10+d)+s
      i := i\(cast radix uInt)

method data 'to string' options -> s
  arg Int data ; arg Str options ; arg Str s
  if options:len=0 or data=0 or data=undefined or { var Int radix := options option "radix" Int ; radix=undefined }
    if data=undefined and options="db"
      return ""
    if data=undefined
      return (shunt options="db" or options="raw" "" "?")
    s := 'convert to string' data
  else
    check radix>=2 and radix<=36
    s := ""
    var Int i := data
    while i<>0
      var Int d := i%radix
      if d<10
        s := (character "0":0:number+d)+s
      else
        s := (character "A":0:number-10+d)+s
      i := i\radix