Package anvil.core.arrays

Source Code of anvil.core.arrays.AnyArray

/*
* $Id: AnyArray.java,v 1.10 2002/09/16 08:05:02 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.core.arrays;

import anvil.core.Any;
import anvil.core.AnySequence;
import anvil.core.AnyAbstractClass;
import anvil.core.Serializer;
import anvil.core.Unserializer;
import anvil.core.UnserializationException;
import anvil.script.Context;
import java.io.Writer;
import java.io.Writer;
import java.io.IOException;

/**
* class AnyArray
*
* @author: Jani Lehtim�ki
*/
public abstract class AnyArray extends AnySequence
{

  public anvil.script.ClassType classOf()
  {
    return __class__;
  }


  public boolean isClass()
  {
    return true;
  }
 
 
  public int typeOf()
  {
    return IS_CLASS;
  }
   

  public boolean isCompatible(Any element)
  {
    return getClass() == element.getClass();
  }
 

  public String toString()
  {
    StringBuffer buffer = new StringBuffer();
    buffer.append('{');
    int n = getSize();
    for(int i=0; i<n; i++) {
      if (i>0) {
        buffer.append(',');
        buffer.append(' ');
      }
      buffer.append(getElement(i).toString());
    }
    buffer.append('}');
    return buffer.toString();
  }


  public Writer toAnvil(Writer writer) throws java.io.IOException
  {
    writer.write("new anvil.arrays.");
    writer.write(classOf().getName());
    writer.write('(');
    int n = getSize();
    for(int i=0; i<n; i++) {
      if (i>0) {
        writer.write(',');
        writer.write(' ');
      }
      getElement(i).toAnvil(writer);
    }
    writer.write(')');
    return writer;
  }


  public static final Any unserialize(Unserializer unserializer) throws UnserializationException
  {
    int ch = unserializer.get();
    int size = (int)unserializer.getLong();
    switch(ch) {
    case (byte)'b':
      return AnyBooleanArray.unserialize(unserializer, size);
    case (byte)'c':
      return AnyCharArray.unserialize(unserializer, size);
    case (byte)'s':
      return AnyShortArray.unserialize(unserializer, size);
    case (byte)'i':
      return AnyIntArray.unserialize(unserializer, size);
    case (byte)'j':
      return AnyLongArray.unserialize(unserializer, size);
    case (byte)'f':
      return AnyFloatArray.unserialize(unserializer, size);
    case (byte)'d':
      return AnyDoubleArray.unserialize(unserializer, size);
    case (byte)'S':
      return AnyStringArray.unserialize(unserializer, size);
    case (byte)'o':
      return AnyObjectArray.unserialize(unserializer, size);
    default:
      throw new UnserializationException("Invalid array subtype: "+ch);
    }
  }


  public abstract Any copy();


  public Object clone()
  {
    return copy();
  }


}
TOP

Related Classes of anvil.core.arrays.AnyArray

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.