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

public

type ConsolePrototype
  void
  type ConsolePrototype
    void
  
  method c open p options -> status
    oarg_rw ConsolePrototype c ; arg ImagePrototype p ; arg Str options ; arg ExtendedStatus status
    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 options -> event
    oarg_rw ConsolePrototype c ; arg_w Str key ; arg_w Int buttons x_or_x0 y_or_y0 x1 y1 ; arg_w Str options ; arg Str event
    generic
    event := ""
    # special events are 'redraw' and 'resize'
  
  method c lock_pointer locked
    oarg_rw ConsolePrototype c ; arg CBool locked
    generic
  
  method c close
    oarg_rw ConsolePrototype c
    generic
  
  method c clipboard_export fun param
    oarg_rw ConsolePrototype c ; arg Function fun ; arg Address param
    generic
  
  method c clipboard_import text -> status
    oarg_rw ConsolePrototype c ; arg_w Str text ; arg Status status
    generic
    text := "" ; status := failure

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