commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mt...@apache.org
Subject svn commit: r1086303 - in /commons/sandbox/runtime/trunk/src/main/native: include/acr/clazz.h include/acr/error.h include/acr/string.h include/acr/unsafe.h shared/iofd.c shared/string.c
Date Mon, 28 Mar 2011 17:30:09 GMT
Author: mturk
Date: Mon Mar 28 17:30:09 2011
New Revision: 1086303

URL: http://svn.apache.org/viewvc?rev=1086303&view=rev
Log:
Add fast cp1250 conversion

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr/clazz.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr/error.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr/string.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr/unsafe.h
    commons/sandbox/runtime/trunk/src/main/native/shared/iofd.c
    commons/sandbox/runtime/trunk/src/main/native/shared/string.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/clazz.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/clazz.h?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/clazz.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/clazz.h Mon Mar 28 17:30:09
2011
@@ -24,7 +24,7 @@
  * @file acr_clazz.h
  * @brief
  *
- * ACR Java Class functions
+ * ACR java.lang.Class functions
  *
  */
 

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/error.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/error.h?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/error.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/error.h Mon Mar 28 17:30:09
2011
@@ -1607,6 +1607,7 @@ ACR_INLINE(DWORD) AcrNetOsError()
 #define ACR_THROW(CL, ER)       AcrThrowException(_E, (CL), (ER))
 #define ACR_THROW_OS_ERROR(CL)  AcrThrowException(_E, (CL), ACR_GET_OS_ERROR())
 #endif
+#define ACR_THROW_MSG(CL, MS)   AcrThrow(_E, (CL), MS)
 
 #ifdef __cplusplus
 extern "C" {

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/string.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/string.h?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/string.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/string.h Mon Mar 28 17:30:09
2011
@@ -23,6 +23,7 @@
 #define ACR_CP_DEFAULT      0
 #define ACR_CP_ISO8859_1    1
 #define ACR_CP_UTF_8        2
+#define ACR_CP_1252         3
 
 #define UTF8_TO_JSTRING(V)  AcrNewJavaStringU(_E, (const char *)(V))
 #define CSTR_TO_JSTRING(V)  AcrNewJavaStringA(_E, (const char *)(V))

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/unsafe.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/unsafe.h?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/unsafe.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/unsafe.h Mon Mar 28 17:30:09
2011
@@ -28,7 +28,7 @@
  *
  */
 
-#define UNSAFE_OFF_IFIELD(I)                                                  \
+#define UNSAFE_IFIELD(I)                                                      \
     if (_f##I##n.i != 0) {                                                    \
         _f##I##n.o = AcrUnsafeObjectFieldIdOffset(_E, _clazzn.i, _f##I##n.i); \
     } else (void)(0)

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/iofd.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/iofd.c?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/iofd.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/iofd.c Mon Mar 28 17:30:09 2011
@@ -74,9 +74,9 @@ ACR_CLASS_CTOR(FileDescriptor)
 #if defined(WINDOWS)
     J_LOAD_IFIELD(0001);
 #endif
-    UNSAFE_OFF_IFIELD(0000);
+    UNSAFE_IFIELD(0000);
 #if defined(WINDOWS)
-    UNSAFE_OFF_IFIELD(0001);
+    UNSAFE_IFIELD(0001);
 #endif
     _clazzn.u = 1;
     return 0;
@@ -92,8 +92,6 @@ AcrGetFileDescriptorFd(JNI_STDARGS)
 {
     int fd = -1;
 
-    if (IS_JOBJECT_NULL(_E, _O))
-        return fd;
     if (J4FLD_OFF(0000) != INVALID_FIELD_OFFSET) {
         char *oa = *(char **)_O;
         if (oa != 0) {
@@ -112,8 +110,6 @@ AcrSetFileDescriptorFd(JNI_STDARGS, int 
 {
     int rc = ACR_EBADF;
 
-    if (IS_JOBJECT_NULL(_E, _O))
-        return rc;
     if (J4FLD_OFF(0000) != INVALID_FIELD_OFFSET) {
         char *oa = *(char **)_O;
         if (oa != 0) {
@@ -135,8 +131,6 @@ AcrGetFileDescriptorHandle(JNI_STDARGS)
 {
     HANDLE fh = INVALID_HANDLE_VALUE;
 
-    if (IS_JOBJECT_NULL(_E, _O))
-        return fh;
     if (J4FLD_OFF(0001) != INVALID_FIELD_OFFSET) {
         char *oa = *(char **)_O;
         if (oa != 0) {
@@ -155,8 +149,6 @@ AcrSetFileDescriptorHandle(JNI_STDARGS, 
 {
     int rc = ACR_EBADF;
 
-    if (IS_JOBJECT_NULL(_E, _O))
-        return rc;
     if (J4FLD_OFF(0001) != INVALID_FIELD_OFFSET) {
         char *oa = *(char **)_O;
         if (oa != 0) {
@@ -179,7 +171,7 @@ AcrNewFileDescriptor(JNI_STDENV, int fd,
     jobject fo;
 
     if (!CLAZZ_LOADED) {
-        ACR_SET_OS_ERROR(ACR_EINIT);
+        ACR_THROW_MSG(ACR_EX_EINSTANCE, "FileDescriptor not initialized");
         return 0;
     }
     fo = (*_E)->NewObject(_E, _clazzn.i, J4MID(0001), fd);
@@ -195,3 +187,8 @@ AcrNewFileDescriptor(JNI_STDENV, int fd,
         ACR_SET_OS_ERROR(ACR_ENOMEM);
     return fo;
 }
+
+ACR_IO_EXPORT(jobject, FileDescriptorFactory, new0)(JNI_STDARGS, jint fd, jlong fh)
+{
+    return AcrNewFileDescriptor(_E, fd, (acr_osd_t)LLT(fh));
+}

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/string.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/string.c?rev=1086303&r1=1086302&r2=1086303&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/string.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/string.c Mon Mar 28 17:30:09 2011
@@ -68,6 +68,10 @@ static const char *iso_8859_1_aliases[] 
     "cp819", "819", "28591", "windows-28591", 0
 };
 
+static const char *cp_1252_aliases[] = {
+    "windows-1250", "cp1250", "1250", 0
+};
+
 static const char *utf_8_aliases[] = {
     "utf8", "utf-8", "cp1208", "65001", "windows-65001", 0
 };
@@ -77,6 +81,41 @@ static const char *us_ascii_aliases[] = 
     "cp367", "ansi_x3.4-1968", "646", "646us", "windows-20127", 0
 };
 
+static const jchar _cp_1252[256] = {
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+    0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
+    0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+    0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+    0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+    0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+    0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+    0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
+    0x20AC, 0xFFFE, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+    0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFE, 0x017D, 0xFFFE,
+    0xFFFE, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+    0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFE, 0x017E, 0x0178,
+    0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+    0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+    0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+    0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+    0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
+    0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
+    0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
+    0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
+    0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
+    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+    0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
+    0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
+};
+
 int
 acr_native_codepage = -1;
 
@@ -93,6 +132,10 @@ AcrGetNativeCodePage(const char *cs)
             if (strcasecmp(cs, utf_8_aliases[i]) == 0)
                 return ACR_CP_UTF_8;
         }
+        for (i = 0; cp_1252_aliases[i]; i++) {
+            if (strcasecmp(cs, cp_1252_aliases[i]) == 0)
+                return ACR_CP_1252;
+        }
         for (i = 0; us_ascii_aliases[i]; i++) {
             if (strcasecmp(cs, us_ascii_aliases[i]) == 0)
                 return ACR_CP_ISO8859_1;
@@ -809,6 +852,36 @@ static jstring new_string_iso_8859_1(JNI
     return rs;
 }
 
+static jstring new_string_cp_1252(JNIEnv *_E, const char *s)
+{
+    jstring rs = 0;
+    jsize sl = (jsize)strlen(s);
+
+    if (sl == 0) {
+        return new_string_zerolen(_E);
+    }
+    else if (sl < ACR_MBUFF_SIZ) {
+        jchar  cc[ACR_MBUFF_SIZ];
+        jsize  i;
+        for (i = 0; i < sl; i++) {
+            cc[i] = _cp_1252[(unsigned char)s[i]];
+        }
+        rs = (*_E)->NewString(_E, cc, sl);
+    }
+    else {
+        jchar  *cc;
+        if ((cc = ACR_MALLOC(jchar, sl + 1)) != 0) {
+            size_t  i;
+            for (i = 0; i < sl; i++) {
+                cc[i] = _cp_1252[(unsigned char)s[i]];
+            }
+            rs = (*_E)->NewString(_E, cc, sl);
+            AcrFree(cc);
+        }
+    }
+    return rs;
+}
+
 static jstring new_string_utf_8(JNIEnv *_E, const char *s)
 {
     jstring rs = 0;
@@ -975,6 +1048,9 @@ AcrNewJavaStringA(JNIEnv *_E, const char
         case ACR_CP_UTF_8:
             rv = new_string_utf_8(_E, str);
         break;
+        case ACR_CP_1252:
+            rv = new_string_cp_1252(_E, str);
+        break;
         default:
             rv = new_string_default(_E, str);
         break;



Mime
View raw message