Patch title: Release 94 bulk changes
Abstract:
File: /pliant/language/type/text/istr.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.

abstract
  [UTF-8 ] ; link "Unicode" "http://www.unicode.org/" ; [ strings]

# scope "/pliant/language/" "/pliant/install/"
module "/pliant/install/ring2.pli"
submodule "str32.pli"
module "/pliant/util/encoding/utf8.pli"

type iStr
  field Str utf8


function 'cast iStr' s32 -> s
  arg Str32 s32 ; arg iStr s
  reduction
  s utf8 := utf8_encode s32

function 'cast Str32' s -> s32
  arg iStr s ; arg Str32 s32
  extension
  s32 := utf8_decode s:utf8

function 'cast Status' s -> status
  arg iStr s ; arg Status status
  explicit
  status := utf8_check s:utf8


function compare s1 s2 -> c
  arg iStr s1 s2 ; arg Int c
  c := compare s1:utf8 s2:utf8

function '+' s1 s2 -> s
  arg iStr s1 s2 s
  s utf8 := s1:utf8 + s2:utf8


export iStr
export 'cast iStr' 'cast Str32' 'cast Status'
export compare '+'
if not default_charset_is_utf8
  export iStr
  export 'cast iStr' 'cast Str32' 'cast Status'
  export compare '+'