classpath: java.nio.ByteOrder

Used by jruby.
(Not saying I'm gonna implement String.format :)
This commit is contained in:
Pierre Carrier 2012-11-11 06:04:11 +01:00
parent f8ea506021
commit 74b070f9cc
2 changed files with 53 additions and 1 deletions

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2008-2011, Avian Contributors
/* Copyright (c) 2008-2012, Avian Contributors
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided
@ -1015,3 +1015,15 @@ Java_java_nio_channels_SocketSelector_natUpdateReadySet(JNIEnv *, jclass,
}
extern "C" JNIEXPORT jboolean JNICALL
Java_java_nio_ByteOrder_isNativeBigEndian(JNIEnv *, jclass)
{
union {
uint32_t i;
char c[4];
} u = {0x01020304};
if (u.c[0] == 1)
return JNI_TRUE;
return JNI_FALSE;
}

View File

@ -0,0 +1,40 @@
/* Copyright (c) 2012, Avian Contributors
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided
that the above copyright notice and this permission notice appear
in all copies.
There is NO WARRANTY for this software. See license.txt for
details. */
package java.nio;
public final class ByteOrder {
public static final ByteOrder BIG_ENDIAN = new ByteOrder("BIG_ENDIAN");
public static final ByteOrder LITTLE_ENDIAN = new ByteOrder("LITTLE_ENDIAN");
private static final ByteOrder NATIVE;
private static native boolean isNativeBigEndian();
static {
if (isNativeBigEndian())
NATIVE = BIG_ENDIAN;
else
NATIVE = LITTLE_ENDIAN;
}
private String name;
private ByteOrder(String name) {
this.name = name;
}
public String toString() {
return name;
}
public static ByteOrder nativeOrder() {
return NATIVE;
}
}