class StringDataType extends StorageDataTypeBase {

        private StringDataType() {
        }

        @Override
        public int getType() {
            return STRING;
        }

        @Override
        public int compare(Object aObj, Object bObj) {
            return aObj.toString().compareTo(bObj.toString());
        }

        @Override
        public int getMemory(Object obj) {
            return 16 + 2 * obj.toString().length();
        }

        @Override
        public void write(DataBuffer buff, Object obj) {
            String s = (String) obj;
            write0(buff, s);
        }

        @Override
        public void writeValue(DataBuffer buff, Value v) {
            String s = v.getString();
            write0(buff, s);
        }

        private void write0(DataBuffer buff, String s) {<FILL_FUNCTION_BODY>}

        @Override
        public String read(ByteBuffer buff) {
            return (String) super.read(buff);
        }

        @Override
        public Value readValue(ByteBuffer buff, int tag) {
            int len;
            if (tag == STRING) {
                len = DataUtils.readVarInt(buff);
                if (len == 0)
                    return ValueNull.INSTANCE;
            } else {
                len = tag - TAG_STRING_0_15;
            }
            return ValueString.get(DataUtils.readString(buff, len));
        }
    }

            if (s == null) {
                buff.put((byte) STRING).putVarInt((byte) 0);
                return;
            }
            int len = s.length();
            if (len <= 15) {
                buff.put((byte) (TAG_STRING_0_15 + len));
            } else {
                buff.put((byte) STRING).putVarInt(len);
            }
            buff.putStringData(s, len);
        
<methods>public non-sealed void <init>() ,public com.lealone.db.value.Value add(com.lealone.db.value.Value) ,public boolean checkPrecision(long) ,public static void clearCache() ,public void close() ,public int compareTo(com.lealone.db.value.Value) ,public final int compareTo(com.lealone.db.value.Value, com.lealone.db.value.CompareMode) ,public final int compareTypeSafe(com.lealone.db.value.Value, com.lealone.db.value.CompareMode) ,public com.lealone.db.value.Value convertPrecision(long, boolean) ,public com.lealone.db.value.Value convertScale(boolean, int) ,public com.lealone.db.value.Value convertTo(int) ,public com.lealone.db.value.Value divide(com.lealone.db.value.Value) ,public abstract boolean equals(java.lang.Object) ,public java.sql.Array getArray() ,public java.math.BigDecimal getBigDecimal() ,public java.sql.Blob getBlob() ,public boolean getBoolean() ,public byte getByte() ,public byte[] getBytes() ,public byte[] getBytesNoCopy() ,public java.sql.Clob getClob() ,public T getCollection() ,public java.sql.Date getDate() ,public abstract int getDisplaySize() ,public double getDouble() ,public float getFloat() ,public static int getHigherOrder(int, int) ,public java.io.InputStream getInputStream() ,public int getInt() ,public long getLong() ,public int getMemory() ,public abstract java.lang.Object getObject() ,public abstract long getPrecision() ,public java.io.Reader getReader() ,public java.sql.ResultSet getResultSet() ,public abstract java.lang.String getSQL() ,public int getScale() ,public short getShort() ,public int getSignum() ,public abstract java.lang.String getString() ,public java.sql.Time getTime() ,public java.sql.Timestamp getTimestamp() ,public java.lang.String getTraceSQL() ,public abstract int getType() ,public java.util.UUID getUuid() ,public abstract int hashCode() ,public final boolean isFalse() ,public com.lealone.db.value.Value modulus(com.lealone.db.value.Value) ,public com.lealone.db.value.Value multiply(com.lealone.db.value.Value) ,public com.lealone.db.value.Value negate() ,public abstract void set(java.sql.PreparedStatement, int) throws java.sql.SQLException,public com.lealone.db.value.Value subtract(com.lealone.db.value.Value) ,public java.lang.String toString() <variables>public static final int ARRAY,public static final int BLOB,public static final int BOOLEAN,public static final int BYTE,public static final int BYTES,public static final int CLOB,private static final com.lealone.db.value.CompareMode COMPARE_MODE,public static final int DATE,public static final int DECIMAL,public static final int DOUBLE,public static final int ENUM,public static final int FLOAT,public static final int INT,public static final int JAVA_OBJECT,public static final int LIST,public static final int LONG,public static final int MAP,private static final java.math.BigDecimal MAX_LONG_DECIMAL,private static final java.math.BigDecimal MIN_LONG_DECIMAL,public static final int NULL,public static final int RESULT_SET,public static final int SET,public static final int SHORT,public static final int STRING,public static final int STRING_FIXED,public static final int STRING_IGNORECASE,public static final int TIME,public static final int TIMESTAMP,public static final int TYPE_COUNT,public static final int UNKNOWN,public static final int UUID,private static SoftReference<com.lealone.db.value.Value[]> softCache