#include "Node.h"

extern oop s__5fsize_value_;
extern oop s_ImmutableByteArray;

// oop mElements;

ByteArrayNode::ByteArrayNode(oop elements)
{
  mElements= elements;
}

oop ByteArrayNode::withElements(oop elements)
{
  return new ByteArrayNode(elements);
}

oop ByteArrayNode::encode(oop encoder)
{
  LiteralNode::encode(encoder);
  encoder->translationUnit()->lookupClass(s_ImmutableByteArray);
  encoder->translationUnit()->declareSelector(s__5fsize_value_);
  return this;
}

oop ByteArrayNode::genInitialisation(oop unit)
{
  oop stream= unit->outputStream();
  stream->format("  l_%d= _bind(v_ImmutableByteArray, s__5fsize_value_)(v_ImmutableByteArray, (oop)%d, (oop)\"",
		 mTag,
		 mElements->size());
  iterate(mElements, iter)
    iter.element()->genByte(unit);
  stream->format("\");\n");
  return this;
}

oop ByteArrayNode::printOn(oop stream)
{
  return stream
    ->format("ByteArrayNode(")
    ->print(mElements)
    ->format(")");
}
