Patch title: Release 94 bulk changes
Abstract:
File: /pliant/storage/ground/object.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/data/cache.pli"
module "control.pli"
module "filesystem.pli"


function storage_object site category object fiber -> ptr
  arg Str site category object fiber ; arg Arrow ptr
  var Link:StorageControl c :> storage_control site category object
  if not exists:c
    return null
  c:sem rd_request
  var Pointer:StorageFiber f :> c:fiber first fiber
  if not exists:f
    c:sem rd_release
    return null
  var Link:Type fiber_type :> f type
  c:sem rd_release
  if (cache_open "/pliant/fiber/"+site+"/"+category+"/"+object+"/"+fiber fiber_type (addressof:ptr map Link:CachePrototype))
    (var Stream s) open "storage:/"+site+"/"+category+"/"+object+"/"+fiber in+safe
    (addressof:ptr map Link:CachePrototype) update s
    cache_ready (addressof:ptr map Link:CachePrototype)

function storage_object site category object fiber type -> ptr
  arg Str site category object fiber ; arg Type type ; arg Arrow ptr
  ptr := storage_object site category object fiber
  if ptr<>null and entry_type:ptr<>type
    ptr := null


export storage_object