Patch title: Release 91 bulk changes
Abstract:
File: /language/type/set/array.pli
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


    method a size -> n
      arg Array a ; arg Int n
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


    method a size -> n
      arg Array a ; arg Int n
      n := a:nb
      n := a nb

    method a 'size :=' s
      arg_rw Array a ; arg Int s
      check s>=0 "negative array size"
      if s>a:nb
        a items := memory_resize a:items s*Value:size addres
        if (Value:flags .and. type_flag_scalar)=0
          for (var Int i) a:nb s-1
            Value build_instance (a:items translate Value i)
      if s<a:nb
        if (Value:flags .and. type_flag_scalar)=0
          for (var Int i) s a:nb-1
            Value destroy_instance (a:items translate Value 
        a items := memory_resize a:items s*Value:size addres

    method a 'size :=' s
      arg_rw Array a ; arg Int s
      check s>=0 "negative array size"
      if s>a:nb
        a items := memory_resize a:items s*Value:size addres
        if (Value:flags .and. type_flag_scalar)=0
          for (var Int i) a:nb s-1
            Value build_instance (a:items translate Value i)
      if s<a:nb
        if (Value:flags .and. type_flag_scalar)=0
          for (var Int i) s a:nb-1
            Value destroy_instance (a:items translate Value 
        a items := memory_resize a:items s*Value:size addres
      a:nb := s
      a nb := s