Patch title: Release 94 bulk changes
Abstract:
File: /pliant/storage/database/pointer_pml.pli
Key:
    Removed line
    Added line
module "/pliant/language/compiler.pli"
module "/pliant/storage/ground/control.pli"
module "/pliant/storage/database/prototype.pli"
module "interface.pli"
module "pointer.pli"
module "file_pml.pli"


gvar Relation 'pliant storage database types'
export 'pliant storage database types'

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

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

  Data t
  runtime_compile  Value t  Database (cast "(StorageDatabase "+t:name+")" Ident)  Data (cast "(Data "+t:name+")" Ident)  casttodata (cast "cast (Data "+t:name+")" Ident)  interface_arrow (cast "interface "+t:name Ident)

    type Database
      field DatabaseFilePml file
      field Value value

    DatabaseFilePml maybe Database

    constant interface_arrow (cast (addressof data_interface:Value) Arrow)
    function build db
      arg_w Database db
      db:file:root_interface :> interface_arrow omap DataInterface_
    function destroy db # Must be defined, else (function destroy DatabaseFile) will be inherited, so called twice
      arg_w Database db

    method db data -> d
      oarg Database db ; arg Data d
      (addressof:db omap Database_) get_root (addressof:d map Data_)
    ((the_function '. data' Database -> Data) arg 1) access += access_result_consistent
 
    export '. data'
    'pliant storage database types' define addressof:Value null addressof:Database
    'pliant storage database types' define null addressof:Database addressof:Value
    storage_control_type_sem request
    storage_control_types insert Database:name true addressof:Database
    storage_control_type_sem release

  var Address adr := 'pliant storage database types' query addressof:t null
  if adr=null
    console "kaiee" eol
  check adr<>null
  return (adr map Type)

export StorageDatabase