view interps/rail/src/Thread.h @ 4929:b4364750d576

<mroman_> echo \'double f(double a, int c, double b) { return c*(a + b)/c; }\' | gcc -x c - -o - -S -O3 | paste
author HackBot
date Mon, 29 Sep 2014 08:55:39 +0000
parents 859f9b4339e6
children
line wrap: on
line source

// Thread.h

#ifndef THREAD_H_RAIL_1
#define THREAD_H_RAIL_1

#include "Board.h"
#include "ActivationRecord.h"
#include "Binding.h"
#include "Error.h"
#include "MultiLexer.h"

class Thread
{
public:
  Thread();
  ~Thread();
  void reset(Board & start, std::map<std::string, Board> * newGlobals);
  void go(void);
  void step(void);
  std::list<Binding> const & getDataStack(void);
  std::list<ActivationRecord> const & getProgramStack(void);
  Error::t getStatus(void);
  std::string getErrorString(void);
private:
  std::list<Binding> dataStack;
  std::list<ActivationRecord> programStack;
  std::map<std::string, Board> * globals;
  MultiLexer multi;

  Error::t status;
  std::string custom;
};

#endif