- Timestamp:
- May 28, 2008, 12:24:56 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.c
r68 r78 1 1 /* 2 2 * OS/2 version. 3 * Copyright (c) 2002, 200 4EclipseOS2 Team.3 * Copyright (c) 2002, 2008 EclipseOS2 Team. 4 4 */ 5 5 … … 171 171 OWNERITEM_FID_CACHE OWNERITEMFc; 172 172 ACCEL_FID_CACHE ACCELFc; 173 ACCELTABLE_FID_CACHE ACCELTABLEFc; 173 174 174 175 /*@@TODO (dmik): remove … … 1461 1462 } 1462 1463 1464 /* ACCELTABLE struct */ 1465 1466 void cacheACCELTABLEFids(JNIEnv *env, jobject lpObject, PACCELTABLE_FID_CACHE lpCache) 1467 { 1468 if (lpCache->cached) return; 1469 lpCache->clazz = (*env)->GetObjectClass(env, lpObject); 1470 lpCache->cAccel = (*env)->GetFieldID(env, lpCache->clazz, "cAccel", "S"); 1471 lpCache->codepage = (*env)->GetFieldID(env, lpCache->clazz, "codepage", "S"); 1472 lpCache->aaccel = (*env)->GetFieldID(env, lpCache->clazz, "aaccel", "[Lorg/eclipse/swt/internal/pm/ACCEL;"); 1473 lpCache->cached = 1; 1474 } 1475 1476 PACCELTABLE getACCELTABLEFields(JNIEnv *env, jobject lpObject, PACCELTABLE lpStruct, PACCELTABLE_FID_CACHE lpCache) 1477 { 1478 if (!lpCache->cached) cacheACCELTABLEFids(env, lpObject, lpCache); 1479 lpStruct->cAccel = (*env)->GetShortField(env, lpObject, lpCache->cAccel); 1480 lpStruct->codepage = (*env)->GetShortField(env, lpObject, lpCache->codepage); 1481 { 1482 jobjectArray aaccel = (*env)->GetObjectField(env, lpObject, lpCache->aaccel); 1483 jsize length = (*env)->GetArrayLength(env, aaccel); 1484 1485 if (aaccel) { 1486 DEBUG_CALL("getACCELTABLEFields:aaccel array.\n") 1487 jint ulAccelLen = sizeof( sizeof(ACCEL )*length) + sizeof( ACCELTABLE ); 1488 PACCELTABLE pacctAccelTable = (PACCELTABLE) malloc ( ulAccelLen ); 1489 1490 ACCEL c_pacctAccel, *c_ppacctAccel = NULL; 1491 int i=0; 1492 for(i=0; i<length;i++){ 1493 jobject jaccel = (*env)->GetObjectArrayElement(env, aaccel, i); 1494 if (pacctAccelTable) c_ppacctAccel = getACCELFields(env, jaccel, &c_pacctAccel, &PGLOB(ACCELFc)); 1495 lpStruct->aaccel[i] = *c_ppacctAccel; 1496 } 1497 } 1498 } 1499 return lpStruct; 1500 } 1501 1502 void setACCELTABLEFields(JNIEnv *env, jobject lpObject, PACCELTABLE lpStruct, PACCELTABLE_FID_CACHE lpCache) 1503 { 1504 if (!lpCache->cached) cacheACCELTABLEFids(env, lpObject, lpCache); 1505 (*env)->SetShortField(env, lpObject, lpCache->cAccel, lpStruct->cAccel); 1506 (*env)->SetShortField(env, lpObject, lpCache->codepage, lpStruct->codepage); 1507 { 1508 jobjectArray aaccel = (*env)->GetObjectField(env, lpObject, lpCache->aaccel); 1509 (*env)->SetObjectField(env, lpObject, lpCache->aaccel, aaccel); 1510 } 1511 } 1512 1463 1513 /* FACENAMEDESC struct */ 1464 1514 /*@@TODO (dmik): don't need, remove!
Note:
See TracChangeset
for help on using the changeset viewer.