Patch title: Release 94 bulk changes
Abstract:
File: /pliant/storage/database/set.pli
Key:
    Removed line
    Added line
abstract
  [This is the generic] ; fixed [ Set ] ; [type that contains what is usually called a table in database vocabulary.] ; eol
  [Such an object will be accessed by the database engine through the ] ; link "DataTable" "inmemory.pli" section "type DataTable" ; [ interface defined in ] ; link "inmemory.pli" "inmemory.pli" ; [ module.]

scope "/pliant/storage/" "/pliant/appli/"
module "/pliant/language/compiler.pli"


gvar Relation 'pliant data set types' 'pliant data setnode types'
export 'pliant data set types' 'pliant data setnode types'

function Set t -> tt
  arg Type t ; arg_R Type tt
  has_no_side_effect

  var Address adr := 'pliant data set types' query addressof:t null
  if adr<>null
    return (adr map Type)

  runtime_compile  Value t  Set (cast "(Set "+t:name+")" Ident)  SetNode (cast "(SetNode "+t:name+")" Ident)

    type SetNode
      field IndexNode_ node
      field Str key
      field Value value

    type Set
      field Index_ tree

    function destroy s
      arg_w Set s
      s:tree reset SetNode true

    export Set
    'pliant data set types' define addressof:Value null addressof:Set
    'pliant data setnode types' define addressof:Value null addressof:SetNode
    'pliant set types' define addressof:Set addressof:Set addressof:(new Str "Set")
    'pliant set types' define addressof:Set null addressof:Str
    'pliant set types' define null addressof:Set addressof:Value

  var Address adr := 'pliant data set types' query addressof:t null
  check adr<>null
  return (adr map Type)

export Set