All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xxdb.data.BasicShortMatrix Maven / Gradle / Ivy

There is a newer version: 3.00.2.2
Show newest version
package com.xxdb.data;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.List;
import com.xxdb.io.ExtendedDataInput;
import com.xxdb.io.ExtendedDataOutput;
import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * 
 * Corresponds to DolphinDB short matrix
 *
 */

public class BasicShortMatrix extends AbstractMatrix{
	private short[] values;
	
	public BasicShortMatrix(int rows, int columns){
		super(rows, columns);
		values = new short[rows * columns];
	}
	
	public BasicShortMatrix(int rows, int columns, List list) throws Exception {
		super(rows,columns);
		values = new short[rows*columns];
		if (list == null || list.size() != columns)
			throw new Exception("input list of arrays does not have " + columns + " columns");
		for (int i=0; i getElementClass(){
		return BasicShort.class;
	}

	@Override
	protected void readMatrixFromInputStream(int rows, int columns,	ExtendedDataInput in)  throws IOException{
		int size = rows * columns;
		values =new short[size];
		long totalBytes = (long)size * 2, off = 0;
		ByteOrder bo = in.isLittleEndian() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
		while (off < totalBytes) {
			int len = (int)Math.min(BUF_SIZE, totalBytes - off);
			in.readFully(buf, 0, len);
			int start = (int)(off / 2), end = len / 2;
			ByteBuffer byteBuffer = ByteBuffer.wrap(buf, 0, len).order(bo);
			for (int i = 0; i < end; i++)
				values[i + start] = byteBuffer.getShort(i * 2);
			off += len;
		}
	}

	protected void writeVectorToOutputStream(ExtendedDataOutput out) throws IOException{
		for(short value : values)
			out.writeShort(value);
	}

	@JsonIgnore
	@Override
	public int getScale() {
		return super.getScale();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy