1 package com.google.flatbuffers; 2 3 /** 4 * Interface to represent a read-write buffer. This interface will be used to access and write 5 * FlexBuffers message. 6 */ 7 public interface ReadWriteBuf extends ReadBuf { 8 9 /** 10 * Clears (resets) the buffer so that it can be reused. Write position will be set to the 11 * start. 12 */ clear()13 void clear(); 14 15 /** 16 * Put a boolean into the buffer at {@code writePosition()} . Booleans as stored as single 17 * byte. Write position will be incremented. 18 * @return boolean element 19 */ putBoolean(boolean value)20 void putBoolean(boolean value); 21 22 /** 23 * Put an array of bytes into the buffer at {@code writePosition()}. Write position will be 24 * incremented. 25 * @param value the data to be copied 26 * @param start initial position on value to be copied 27 * @param length amount of bytes to be copied 28 */ put(byte[] value, int start, int length)29 void put (byte[] value, int start, int length); 30 31 /** 32 * Write a byte into the buffer at {@code writePosition()}. Write position will be 33 * incremented. 34 */ put(byte value)35 void put(byte value); 36 37 /** 38 * Write a 16-bit into in the buffer at {@code writePosition()}. Write position will be 39 * incremented. 40 */ putShort(short value)41 void putShort(short value); 42 43 /** 44 * Write a 32-bit into in the buffer at {@code writePosition()}. Write position will be 45 * incremented. 46 */ putInt(int value)47 void putInt(int value); 48 49 /** 50 * Write a 64-bit into in the buffer at {@code writePosition()}. Write position will be 51 * incremented. 52 */ putLong(long value)53 void putLong(long value); 54 55 /** 56 * Write a 32-bit float into the buffer at {@code writePosition()}. Write position will be 57 * incremented. 58 */ putFloat(float value)59 void putFloat(float value); 60 61 /** 62 * Write a 64-bit float into the buffer at {@code writePosition()}. Write position will be 63 * incremented. 64 */ putDouble(double value)65 void putDouble(double value); 66 67 /** 68 * Write boolean into a given position on the buffer. Booleans as stored as single byte. 69 * @param index position of the element in buffer 70 */ setBoolean(int index, boolean value)71 void setBoolean(int index, boolean value); 72 73 /** 74 * Read a byte from data. 75 * @param index position of the element in the buffer 76 * @return a byte 77 */ set(int index, byte value)78 void set(int index, byte value); 79 80 /** 81 * Write an array of bytes into the buffer. 82 * @param index initial position of the buffer to be written 83 * @param value the data to be copied 84 * @param start initial position on value to be copied 85 * @param length amount of bytes to be copied 86 */ set(int index, byte[] value, int start, int length)87 void set(int index, byte[] value, int start, int length); 88 89 /** 90 * Read a short from data. 91 * @param index position of the element in ReadBuf 92 * @return a short 93 */ setShort(int index, short value)94 void setShort(int index, short value); 95 96 /** 97 * Read a 32-bit int from data. 98 * @param index position of the element in ReadBuf 99 * @return an int 100 */ setInt(int index, int value)101 void setInt(int index, int value); 102 103 /** 104 * Read a 64-bit long from data. 105 * @param index position of the element in ReadBuf 106 * @return a long 107 */ setLong(int index, long value)108 void setLong(int index, long value); 109 110 /** 111 * Read a 32-bit float from data. 112 * @param index position of the element in ReadBuf 113 * @return a float 114 */ setFloat(int index, float value)115 void setFloat(int index, float value); 116 117 /** 118 * Read a 64-bit float from data. 119 * @param index position of the element in ReadBuf 120 * @return a double 121 */ setDouble(int index, double value)122 void setDouble(int index, double value); 123 124 writePosition()125 int writePosition(); 126 /** 127 * Defines the size of the message in the buffer. It also determines last position that buffer 128 * can be read or write. Last byte to be accessed is in position {@code limit() -1}. 129 * @return indicate last position 130 */ limit()131 int limit(); 132 133 /** 134 * Request capacity of the buffer. In case buffer is already larger 135 * than the requested, this method will just return true. Otherwise 136 * It might try to resize the buffer. 137 * 138 * @return true if buffer is able to offer 139 * the requested capacity 140 */ requestCapacity(int capacity)141 boolean requestCapacity(int capacity); 142 } 143