1 package org.robolectric.res.android;
2 
3 import java.nio.ByteOrder;
4 
5 public class Util {
6 
7   public static final boolean JNI_TRUE = true;
8   public static final boolean JNI_FALSE = false;
9 
10   public static final int SIZEOF_SHORT = 2;
11   public static final int SIZEOF_INT = 4;
12   public static final int SIZEOF_CPTR = 4;
13   private static boolean littleEndian = ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN;
14 
15   private static final boolean DEBUG = false;
16 
dtohs(short v)17   static short dtohs(short v) {
18     return littleEndian
19         ? v
20         : (short) ((v << 8) | (v >> 8));
21   }
22 
dtohs(char v)23   static char dtohs(char v) {
24     return littleEndian
25         ? v
26         : (char) ((v << 8) | (v >> 8));
27   }
28 
dtohl(int v)29   static int dtohl(int v) {
30     return littleEndian
31         ? v
32         : (v << 24) | ((v << 8) & 0x00FF0000) | ((v >> 8) & 0x0000FF00) | (v >> 24);
33   }
34 
htods(short v)35   static short htods(short v) {
36     return littleEndian
37         ? v
38         : (short) ((v << 8) | (v >> 8));
39   }
40 
htodl(int v)41   static int htodl(int v) {
42     return littleEndian
43         ? v
44         : (v << 24) | ((v << 8) & 0x00FF0000) | ((v >> 8) & 0x0000FF00) | (v >> 24);
45   }
46 
isTruthy(int i)47   public static boolean isTruthy(int i) {
48     return i != 0;
49   }
50 
isTruthy(Object o)51   public static boolean isTruthy(Object o) {
52     return o != null;
53   }
54 
ALOGD(String message, Object... args)55   static void ALOGD(String message, Object... args) {
56     if (DEBUG) {
57       System.out.println("DEBUG: " + String.format(message, args));
58     }
59   }
60 
ALOGW(String message, Object... args)61   static void ALOGW(String message, Object... args) {
62     System.out.println("WARN: " + String.format(message, args));
63   }
64 
ALOGV(String message, Object... args)65   public static void ALOGV(String message, Object... args) {
66     if (DEBUG) {
67       System.out.println("VERBOSE: " + String.format(message, args));
68     }
69   }
70 
ALOGI(String message, Object... args)71   public static void ALOGI(String message, Object... args) {
72     if (DEBUG) {
73       System.out.println("INFO: " + String.format(message, args));
74     }
75   }
76 
ALOGE(String message, Object... args)77   static void ALOGE(String message, Object... args) {
78     System.out.println("ERROR: " + String.format(message, args));
79   }
80 
LOG_FATAL_IF(boolean assertion, String message, Object... args)81   static void LOG_FATAL_IF(boolean assertion, String message, Object... args) {
82     assert !assertion : String.format(message, args);
83   }
84 
ATRACE_CALL()85   static void ATRACE_CALL() {
86   }
87 
ATRACE_NAME(String s)88   public static void ATRACE_NAME(String s) {
89   }
90 
UNLIKELY(boolean b)91   static boolean UNLIKELY(boolean b) {
92     return b;
93   }
94 
CHECK(boolean b)95   public static void CHECK(boolean b) {
96     assert b;
97   }
98 
logError(String s)99   static void logError(String s) {
100     System.err.println(s);
101   }
102 
logWarning(String s)103   static void logWarning(String s) {
104     System.err.println("[WARN] " + s);
105   }
106 
ReadUtf16StringFromDevice(char[] src, int len )107   static String ReadUtf16StringFromDevice(char[] src, int len/*, std::string* out*/) {
108     char[] buf = new char[5];
109     int i = 0;
110     StringBuilder strBuf = new StringBuilder();
111     while (src[i] != '\0' && len != 0) {
112       char c = dtohs(src[i]);
113       // utf16_to_utf8(&c, 1, buf, sizeof(buf));
114       // out->append(buf, strlen(buf));
115       strBuf.append(c);
116       ++i;
117       --len;
118     }
119     return strBuf.toString();
120   }
121 }
122