AsciiStringUtil Class — netty Architecture
Architecture documentation for the AsciiStringUtil class in AsciiStringUtil.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 84873396_ba4c_3002_b5f9_9b7743d03751["AsciiStringUtil"] 121ad8a4_6f42_e57b_99a0_440e265cbc75["AsciiStringUtil.java"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|defined in| 121ad8a4_6f42_e57b_99a0_440e265cbc75 58ce1a46_a851_3cdb_7866_9d7058c6d7dc["AsciiString()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 58ce1a46_a851_3cdb_7866_9d7058c6d7dc b1bfa746_05ac_cde4_0422_8b8d974c5698["containsUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| b1bfa746_05ac_cde4_0422_8b8d974c5698 cc783f21_4dad_8ac3_503e_a4fdeaf2d428["linearContainsUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| cc783f21_4dad_8ac3_503e_a4fdeaf2d428 631f21b0_b5b9_3bc9_4f06_5bec37499ba1["unrolledContainsUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 631f21b0_b5b9_3bc9_4f06_5bec37499ba1 b3010567_92f1_0afe_995f_c513e385142f["toLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| b3010567_92f1_0afe_995f_c513e385142f c2c8955b_a516_e67d_eb69_171073ae486c["linearToLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| c2c8955b_a516_e67d_eb69_171073ae486c 293a26d5_1277_f133_0dbc_9358b4b043b5["unrolledToLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 293a26d5_1277_f133_0dbc_9358b4b043b5 21106794_3e29_aab2_bb7f_344a799d8acc["containsLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 21106794_3e29_aab2_bb7f_344a799d8acc c2ee3a38_b203_eb6b_de8d_1ff84daa073c["linearContainsLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| c2ee3a38_b203_eb6b_de8d_1ff84daa073c bd46daab_535a_f639_4851_df731a593516["unrolledContainsLowerCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| bd46daab_535a_f639_4851_df731a593516 4145ce36_ee3b_ee17_ea11_7e3ee9de39d1["toUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 4145ce36_ee3b_ee17_ea11_7e3ee9de39d1 3cc61e9d_c193_86a8_9877_a788263a1913["linearToUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 3cc61e9d_c193_86a8_9877_a788263a1913 6a5e7782_4c2b_e42a_a9cd_12fc1f861554["unrolledToUpperCase()"] 84873396_ba4c_3002_b5f9_9b7743d03751 -->|method| 6a5e7782_4c2b_e42a_a9cd_12fc1f861554
Relationship Graph
Source Code
common/src/main/java/io/netty/util/AsciiStringUtil.java lines 24–291
final class AsciiStringUtil {
/**
* Convert the {@link AsciiString} to a lower case.
*
* @param string the {@link AsciiString} to convert
* @return the new {@link AsciiString} in lower case
*/
static AsciiString toLowerCase(final AsciiString string) {
final byte[] byteArray = string.array();
final int offset = string.arrayOffset();
final int length = string.length();
if (!containsUpperCase(byteArray, offset, length)) {
return string;
}
final byte[] newByteArray = PlatformDependent.allocateUninitializedArray(length);
toLowerCase(byteArray, offset, newByteArray);
return new AsciiString(newByteArray, false);
}
private static boolean containsUpperCase(final byte[] byteArray, int offset, final int length) {
if (!PlatformDependent.isUnaligned()) {
return linearContainsUpperCase(byteArray, offset, length);
}
final int longCount = length >>> 3;
for (int i = 0; i < longCount; ++i) {
final long word = PlatformDependent.getLong(byteArray, offset);
if (SWARUtil.containsUpperCase(word)) {
return true;
}
offset += Long.BYTES;
}
return unrolledContainsUpperCase(byteArray, offset, length & 7);
}
private static boolean linearContainsUpperCase(final byte[] byteArray, final int offset, final int length) {
final int end = offset + length;
for (int idx = offset; idx < end; ++idx) {
if (isUpperCase(byteArray[idx])) {
return true;
}
}
return false;
}
private static boolean unrolledContainsUpperCase(final byte[] byteArray, int offset, final int byteCount) {
assert byteCount >= 0 && byteCount < 8;
if ((byteCount & Integer.BYTES) != 0) {
final int word = PlatformDependent.getInt(byteArray, offset);
if (SWARUtil.containsUpperCase(word)) {
return true;
}
offset += Integer.BYTES;
}
if ((byteCount & Short.BYTES) != 0) {
if (isUpperCase(PlatformDependent.getByte(byteArray, offset))) {
return true;
}
if (isUpperCase(PlatformDependent.getByte(byteArray, offset + 1))) {
return true;
}
offset += Short.BYTES;
}
if ((byteCount & Byte.BYTES) != 0) {
return isUpperCase(PlatformDependent.getByte(byteArray, offset));
}
return false;
}
private static void toLowerCase(final byte[] src, final int srcOffset, final byte[] dst) {
if (!PlatformDependent.isUnaligned()) {
linearToLowerCase(src, srcOffset, dst);
return;
}
final int length = dst.length;
final int longCount = length >>> 3;
int offset = 0;
for (int i = 0; i < longCount; ++i) {
final long word = PlatformDependent.getLong(src, srcOffset + offset);
Source
Frequently Asked Questions
What is the AsciiStringUtil class?
AsciiStringUtil is a class in the netty codebase, defined in common/src/main/java/io/netty/util/AsciiStringUtil.java.
Where is AsciiStringUtil defined?
AsciiStringUtil is defined in common/src/main/java/io/netty/util/AsciiStringUtil.java at line 24.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free