Patch title: Release 93 bulk changes
Abstract:
File: /graphic/console/prototype.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
submodule "/pliant/graphic/image/prototype.pli"

public

type ConsolePrototype
  void

method c open p options
  oarg_rw ConsolePrototype c ; arg ImagePrototype p ; arg Str options
  generic

method c query -> p
  oarg_rw ConsolePrototype c ; arg ImagePrototype p
  generic

method c paint img tx ty
  oarg_rw ConsolePrototype c ; oarg_rw ImagePrototype img ; arg Int tx ty
  generic

method c copy x0 y0 x1 y1 xx yy
  oarg_rw ConsolePrototype c ; arg Int x0 y0 x1 y1 xx yy
  generic

method c event key buttons x_or_x0 y_or_y0 x1 y1 -> event
  oarg_rw ConsolePrototype c ; arg_w Str key ; arg_w Int buttons x_or_x0 y_or_y0 x1 y1 ; arg Str event
  generic
  event := ""
  # special events are 'redraw' and 'resize'

method c close
  oarg_rw ConsolePrototype c
  generic


gvar Sem sem
gvar Dictionary consoles

function graphic_console_record model driver
  arg Str model ; arg Type driver
  sem request
  consoles insert model true addressof:driver
  sem release

function graphic_console model -> console
  arg Str model ; arg Link:ConsolePrototype console
  sem rd_request
  var Link:Type t :> (consoles first model) map Type
  if not exists:t
    sem rd_release
    pliant_compiler_semaphore request
    pliant_load_module "/pliant/graphic/console/"+model+".pli" the_module:"/pliant/language/basic/safe.pli" 0 (null map Module)
    pliant_compiler_semaphore release
    sem rd_request
    t :> (consoles first model) map Type
  if exists:t
    console :> entry_new:t map ConsolePrototype
  else
    console :> null map ConsolePrototype
  sem rd_release

export graphic_console_record graphic_console