-- (C) Copyright International Business Machines Corporation 23 January 
-- 1990.  All Rights Reserved. 
--  
-- See the file USERAGREEMENT distributed with this software for full 
-- terms and conditions of use. 
-- File: listuff.d
-- Author: Andy Lowry
-- SCCS Info: @(#)listuff.d	1.6 3/13/90

-- This is the interface to the only really nasty piece of the Hermes
-- code generator.  The reason it's nasty is that the interface
-- doesn't really tell the full story of what's going on.
-- Specifically, the LIstuff process takes an absprog and an LI
-- program and stuffs the latter into a hidden field of the former.
-- Because it's a hidden field, this interface defininition doesn't
-- mention it at all; instead, it describes a function which discards
-- the LI prog but doesn't touch the absprog.

LIStuff: using (interpform)

definitions

  LIStuff: callmessage (
      absprog: predefined!program,
      LIprog: interpform!prog
    ) constant (absprog)
    exit {full(absprog)};
  LIStuffQ: inport of LIStuff {full};
  LIStuffFn: outport of LIStuffQ;

  -- LIUnstuff does the reverse of LIStuff... it's not really
  -- necessary for any of the Hermes system software, but Joel needs
  -- it for debugging the disassembler
  LIUnstuff: callmessage (
      absprog: predefined!program,
      LIprog: interpform!prog
    )
    constant (absprog)
    exit {full};
  LIUnstuffQ: inport of LIUnstuff {full(absprog)};
  LIUnstuffFn: outport of LIUnstuffQ;  

end definitions
