Patch title: Release 96 bulk changes
Abstract:
File: /pliant/util/pml/generic.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/type/misc/blob.pli"
module "stream.pli"



export BinaryError BinaryUnknown
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/type/misc/blob.pli"
module "stream.pli"



export BinaryError BinaryUnknown
export '. ilabel' '. itype' '. isize' '. iforward' '. iskip'
export '. ilabel' '. itype' '. isize' '. iforward' '. iskip' 




function pml_copy s d -> status
  arg_rw Stream s d ; arg Status status
  var Int l := 0
  part copy
    var Int h := s pick_uInt8
    if h=11000100b
      l -= 1
    eif h=11000101b
      l += 1
    var Int size := s isize
    if size=undefined
      return failure
    if (raw_copy s d size size)<>size
      return failure
    if l>0
      restart copy
  status := shunt l=0 success failure


export pml_copy


function pml_size_update buffer bufsize size more_start more
  arg Address buffer ; arg Int bufsize ; arg_rw Int size mor
  for (var Int i) 0 more_stop-more_start
    if i=bufsize
      size -= bufsize
      return false
    var Int b := buffer map uInt8 i
    if more_start>=Int:size-1
      if more_start>=Int:size or b>=128
        size := undefined
        return true
    size += 2^(8*more_start)
    if size<0
      size := undefined
      return true
    more_start += 1
  ready := true

function pml_size buffer bufsize size more_start more_stop -
  arg Address buffer ; arg Int bufsize ; arg_w Int size more
  check bufsize>0
  var Int h := buffer map uInt8
  if h<224
    size := binary_sizes h
    ready := true
  else
    size := 1
    more_start := 0
    more_stop := 2^(h .and. 3)
    ready := pml_size_update (buffer translate uInt8 1) bufs
function pml_size_update buffer bufsize size more_start more
  arg Address buffer ; arg Int bufsize ; arg_rw Int size mor
  for (var Int i) 0 more_stop-more_start
    if i=bufsize
      size -= bufsize
      return false
    var Int b := buffer map uInt8 i
    if more_start>=Int:size-1
      if more_start>=Int:size or b>=128
        size := undefined
        return true
    size += 2^(8*more_start)
    if size<0
      size := undefined
      return true
    more_start += 1
  ready := true

function pml_size buffer bufsize size more_start more_stop -
  arg Address buffer ; arg Int bufsize ; arg_w Int size more
  check bufsize>0
  var Int h := buffer map uInt8
  if h<224
    size := binary_sizes h
    ready := true
  else
    size := 1
    more_start := 0
    more_stop := 2^(h .and. 3)
    ready := pml_size_update (buffer translate uInt8 1) bufs
    

export pml_size pml_size_update
export pml_size pml_size_update