#include "Node.h"

//  static int Tag;
//  
//  int mTag;

int LiteralNode::Tag= 0;

LiteralNode::LiteralNode(void)
{
  mTag= ++Tag;
}

int LiteralNode::tag(void)
{
  return mTag;
}

oop LiteralNode::encode(oop compiler)
{
  mLocation= compiler->pushStack();
  compiler->declareLiteral(this);
  return this;
}

oop LiteralNode::genDefinition(oop unit)
{
  unit->outputStream()->format("static oop l_%d= 0;\n", mTag);
  return this;
}

oop LiteralNode::genInitialisation(oop unit)
{
  subclassResponsibility(0);
}

oop LiteralNode::gen(oop unit)
{
  unit->outputStream()->format("  _%d= l_%d;\n", mLocation, mTag);
  return this;
}
