Interface for qBeta module object

Origin: LIB

MonitorSystem: obj
   %domain_boundary
   %module LIB.BasicSystem
   %public
   System: LIB.BasicSystem.basicSystem
      %public
      Semaphore:
         %globals P_status,SQS
         cnt: var integer
         M: obj Lock
         Q: obj ProcessQueue
         %public
         init:
         wait:
            theActive: ref BasicProcess
         signal:
            P: ref BasicProcess
      Process: BasicProcess
         %globals SQS,monitor,immutable,console
         -- we need to find out how to restrict Process to have no
         -- visible interface. Perhaps rethink the use of interface to
         -- define mena that only patterns in an interface are public
         -- alle other patterns (and data items) are private
         
         %public
         start::
            P: ref Process
      Monitor:
         %globals P_status,SQS
         %interface entry
         mutex: obj Semaphore
         _V: var integer
         %public
         init:
         entry:
            %kind method
            %arguments immutable
         wait:
            cond: var boolean
            loop: obj