/* This file is part of the OdinMS Maple Story Server Copyright (C) 2008 ~ 2010 Patrick Huy <patrick.huy@frz.cc> Matthias Butz <matze@odinms.de> Jan Christian Meyer <vimes@odinms.de> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation. You may not use, modify or distribute this program under any other version of the GNU Affero General Public License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package tools.data.input; import java.awt.Point; /** * Provides an abstract interface for a little-endian stream of bytes. * * @author Frz * @version 1.0 * @since Revision 323 */ public interface LittleEndianAccessor { /** * Reads a byte. * * @return The byte read. */ byte readByte(); int readByteAsInt(); /** * Reads a character. * * @return The character read. */ char readChar(); /** * Reads a short integer. * * @return The short integer read. */ short readShort(); /** * Reads a integer. * * @return The integer read. */ int readInt(); /** * Reads a long integer. * * @return The long integer read. */ long readLong(); /** * Skips ahead <code>num</code> bytes. * * @param num Number of bytes to skip ahead. */ void skip(int num); /** * Reads a number of bytes. * * @param num The number of bytes to read. * @return The bytes read. */ byte[] read(int num); /** * Reads a floating point integer. * * @return The floating point integer read. */ float readFloat(); /** * Reads a double-precision integer. * * @return The double-precision integer read. */ double readDouble(); /** * Reads an ASCII string. * * @param n * @return The string read. */ String readAsciiString(int n); /** * Reads a MapleStory convention lengthed ASCII string. * * @return The string read. */ String readMapleAsciiString(); /** * Reads a null-terminated string from the stream. * * @return The string read. */ String readNullTerminatedAsciiString(); /** * Reads a MapleStory Position information * * @return The Position read. */ Point readPos(); /** * Gets the number of bytes read so far. * * @return The number of bytes read as an long integer. */ long getBytesRead(); /** * Gets the number of bytes left for reading. * * @return The number of bytes left for reading as an long integer. */ long available(); String toString(final boolean b); }