Changeset 78 for trunk/src


Ignore:
Timestamp:
May 28, 2008, 12:24:56 AM (17 years ago)
Author:
lpino
Message:

(structs.c) - Added ACCELTABLE struct

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.c

    r68 r78  
    11/*
    22 * OS/2 version.
    3  * Copyright (c) 2002, 2004 EclipseOS2 Team.
     3 * Copyright (c) 2002, 2008 EclipseOS2 Team.
    44 */
    55
     
    171171OWNERITEM_FID_CACHE OWNERITEMFc;
    172172ACCEL_FID_CACHE ACCELFc;
     173ACCELTABLE_FID_CACHE ACCELTABLEFc;
    173174
    174175/*@@TODO (dmik): remove
     
    14611462}
    14621463
     1464/* ACCELTABLE struct */
     1465
     1466void 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
     1476PACCELTABLE 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
     1502void 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
    14631513/* FACENAMEDESC struct */
    14641514/*@@TODO (dmik): don't need, remove!
Note: See TracChangeset for help on using the changeset viewer.