#include "Node.h"

extern oop s_Symbol;
extern oop s__5fvalue_;

//  oop mValue;

SymbolNode::SymbolNode(oop value) : StringNode(value) {}

oop SymbolNode::fromString(oop string)
{
  return new SymbolNode(string);
}

oop SymbolNode::encode(oop compiler)
{
  LiteralNode::encode(compiler);
  compiler->translationUnit()->lookupClass(s_Symbol);
  compiler->translationUnit()->declareSelector(s__5fvalue_);
  return this;
}

oop SymbolNode::genInitialisation(oop unit)
{
  unit->outputStream()->format("  l_%d= _bind(v_Symbol, s__5fvalue_)(v_Symbol, (oop)\"%s\");\n", mTag, mValue->cString());
  return this;
}

oop SymbolNode::printOn(oop stream)
{
  stream->format("SymbolNode(%d)", mValue);
  return this;
}
