
#ifndef _SCOL_VIRTUAL_MACHINE_
#define _SCOL_VIRTUAL_MACHINE_

#include "scolPrerequisites.h"

#ifdef __cplusplus
extern "C" 
{
#endif

/*!
Scol virtual machine
*/
struct Mmachine
{
  int* tape;     //<! tape pointer
  int sizetape;  //<! size of the tape
  int pp;        //<! stack pointer
  int maxpp;     //<! max value of pp
  int topheap;   //<! top of stack
  int sigGC;     //<! GC activation distance
  int h;         //<! current header position
  int err;
  int* top;		   //!< top of tape
  //$BLG - v5.22: Add
  int lckdGC;	   //!< Locked GC flag
};
typedef struct Mmachine* mmachine;

// Mmachine instance reference, must be extern as declared in header file.
extern mmachine mm;

#ifdef __cplusplus
}
#endif

#endif
