Package erjang.m.java

Source Code of erjang.m.java.JavaArray

package erjang.m.java;

import java.lang.reflect.Array;

import erjang.EList;
import erjang.EObject;
import erjang.EProc;
import erjang.ERT;
import erjang.ESeq;

/** Wrap an array and present it as an ESeq */
class JavaArray extends ESeq {

  private final int idx;
  private final Object arr;
  private EProc self;

  static ESeq box(EProc self, Object arr, int idx) {
    if (Array.getLength(arr) == idx)
      return ERT.NIL;
    return new JavaArray(self, arr, idx);
  }

  private JavaArray(EProc self, Object arr, int idx) {
    this.arr = arr;
    this.idx = idx;
    this.self = self;
  }

  @Override
  public ESeq cons(EObject h) {
    return new EList(h, this);
  }

  @Override
  public ESeq tail() {
    return box(self, arr, idx + 1);
  }

  @Override
  public EObject head() {
    return JavaObject.box(self, Array.get(arr, idx));
  }
}
TOP

Related Classes of erjang.m.java.JavaArray

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.