123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
-
- /* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ==================================================================== */
-
-
- package org.apache.poi.util;
-
- import org.apache.poi.util.LittleEndian.BufferUnderrunException;
-
- import java.io.*;
-
- /**
- * representation of a long (16-bit) field at a fixed location within
- * a byte array
- *
- * @author Marc Johnson (mjohnson at apache dot org
- */
-
- public class LongField
- implements FixedField
- {
- private long _value;
- private final int _offset;
-
- /**
- * construct the LongField with its offset into its containing
- * byte array
- *
- * @param offset of the field within its byte array
- *
- * @exception ArrayIndexOutOfBoundsException if offset is negative
- */
-
- public LongField(final int offset)
- throws ArrayIndexOutOfBoundsException
- {
- if (offset < 0)
- {
- throw new ArrayIndexOutOfBoundsException("Illegal offset: "
- + offset);
- }
- _offset = offset;
- }
-
- /**
- * construct the LongField with its offset into its containing
- * byte array and initialize its value
- *
- * @param offset of the field within its byte array
- * @param value the initial value
- *
- * @exception ArrayIndexOutOfBoundsException if offset is negative
- */
-
- public LongField(final int offset, final long value)
- throws ArrayIndexOutOfBoundsException
- {
- this(offset);
- set(value);
- }
-
- /**
- * Construct the LongField with its offset into its containing
- * byte array and initialize its value from its byte array
- *
- * @param offset of the field within its byte array
- * @param data the byte array to read the value from
- *
- * @exception ArrayIndexOutOfBoundsException if the offset is not
- * within the range of 0..(data.length - 1)
- */
-
- public LongField(final int offset, final byte [] data)
- throws ArrayIndexOutOfBoundsException
- {
- this(offset);
- readFromBytes(data);
- }
-
- /**
- * construct the LongField with its offset into its containing
- * byte array, initialize its value, and write the value to a byte
- * array
- *
- * @param offset of the field within its byte array
- * @param value the initial value
- * @param data the byte array to write the value to
- *
- * @exception ArrayIndexOutOfBoundsException if offset is negative
- */
-
- public LongField(final int offset, final long value, final byte [] data)
- throws ArrayIndexOutOfBoundsException
- {
- this(offset);
- set(value, data);
- }
-
- /**
- * get the LongField's current value
- *
- * @return current value
- */
-
- public long get()
- {
- return _value;
- }
-
- /**
- * set the LongField's current value
- *
- * @param value to be set
- */
-
- public void set(final long value)
- {
- _value = value;
- }
-
- /**
- * set the LongField's current value and write it to a byte array
- *
- * @param value to be set
- * @param data the byte array to write the value to
- *
- * @exception ArrayIndexOutOfBoundsException if the offset is out
- * of range
- */
-
- public void set(final long value, final byte [] data)
- throws ArrayIndexOutOfBoundsException
- {
- _value = value;
- writeToBytes(data);
- }
-
- /* ********** START implementation of FixedField ********** */
-
- /**
- * set the value from its offset into an array of bytes
- *
- * @param data the byte array from which the value is to be read
- *
- * @exception ArrayIndexOutOfBoundsException if the offset is out
- * of range
- */
-
- public void readFromBytes(final byte [] data)
- throws ArrayIndexOutOfBoundsException
- {
- _value = LittleEndian.getLong(data, _offset);
- }
-
- /**
- * set the value from an InputStream
- *
- * @param stream the InputStream from which the value is to be
- * read
- *
- * @exception BufferUnderrunException if there is not enough data
- * available from the InputStream
- * @exception IOException if an IOException is thrown from reading
- * the InputStream
- */
-
- public void readFromStream(final InputStream stream)
- throws IOException
- {
- _value = LittleEndian.readLong(stream);
- }
-
- /**
- * write the value out to an array of bytes at the appropriate
- * offset
- *
- * @param data the array of bytes to which the value is to be
- * written
- *
- * @exception ArrayIndexOutOfBoundsException if the offset is out
- * of range
- */
-
- public void writeToBytes(final byte [] data)
- throws ArrayIndexOutOfBoundsException
- {
- LittleEndian.putLong(data, _offset, _value);
- }
-
- /**
- * return the value as a String
- *
- * @return the value as a String
- */
-
- public String toString()
- {
- return String.valueOf(_value);
- }
-
- /* ********** END implementation of FixedField ********** */
- } // end public class LongField
|