Skip to content
Browse files

classpath: java.nio.ByteOrder

Used by jruby.
(Not saying I'm gonna implement String.format :)
  • Loading branch information...
1 parent f8ea506 commit 74b070f9cc91112dbf2d3d863ca28292dc766046 Pierre Carrier committed
Showing with 53 additions and 1 deletion.
  1. +13 −1 classpath/java-nio.cpp
  2. +40 −0 classpath/java/nio/ByteOrder.java
View
14 classpath/java-nio.cpp
@@ -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
40 classpath/java/nio/ByteOrder.java
@@ -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;
+ }
+}

0 comments on commit 74b070f

Please sign in to comment.
Something went wrong with that request. Please try again.