package com.l7tech.xml.xpath;

import java.lang.reflect.Array;
import java.util.function.Function;
import net.sf.saxon.s9api.XdmValue;

class r implements XpathResultValueSet {
   final short val$type;
   final XdmValue val$result;

   r(short var1, XdmValue var2) {
      this.val$type = var1;
      this.val$result = var2;
   }

   @Override
   public short getType() {
      return this.val$type;
   }

   @Override
   public boolean isEmpty() {
      return this.val$result.size() == 0;
   }

   @Override
   public int size() {
      return this.val$result.size();
   }

   @Override
   public XpathResultValueIterator getIterator() {
      return DomCompiledXpath.a(this.val$result);
   }

   @Override
   public String[] getStringArray() {
      return this.a(XpathResultValue::getString, String.class);
   }

   @Override
   public Boolean[] getBooleanArray() {
      return this.a(XpathResultValue::getBoolean, Boolean.class);
   }

   @Override
   public Number[] getNumberArray() {
      return this.a(XpathResultValue::getNumber, Number.class);
   }

   private <T> T[] a(Function<XpathResultValue, ? extends T> var1, Class<? extends T> var2) {
      XpathResultValue var3 = new XpathResultValue();
      XpathResultValueIterator var4 = this.getIterator();
      Object[] var5 = (Object[])Array.newInstance(var2, this.size());
      int var6 = 0;

      while (var4.hasNext()) {
         var4.next(var3);
         var5[var6++] = var1.apply(var3);
      }

      return (T[])var5;
   }
}
