Changeset 181

Show
Ignore:
Timestamp:
03/01/07 20:01:18 (2 years ago)
Author:
keinfarbton
Message:

the paint example works

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/jni/src/dejavu/dejavu/Intern.d

    r180 r181  
    505505                    case "with": 
    506506                    case "sizeof": 
    507                     case "mangleof ": 
     507                    case "mangleof": 
    508508                    //Stdout.formatln( "escape {0} in {1}", name, mModule.getFqn() ); 
    509509                    return(name ~ "_KEYWORDESCAPE"); 
    510510 
     511                    case "length": 
     512                        return(name ~ "_ESCAPE"); 
    511513                default: 
    512514                //Stdout.formatln( "non-escape {0} in {1}", name, mModule.getFqn() ); 
     
    520522            String strSig  = String.fromUtf8( fromUtf8z( sig  )); 
    521523            Field fld = clazzObj.findField( strName, strSig, aStatic ); 
     524            if( fld is null ){ 
     525                fld = clazzObj.findField( new String( "fld_" ) ~ strName, strSig, aStatic ); 
     526            } 
    522527            assert( fld !is null, Layouter( "{} {} {}", clazzObj.getName().toUtf8, strName.toUtf8, strSig.toUtf8 )); 
    523528            if( !fld ) return null; 
     
    613618        } 
    614619        jthrowable ExceptionOccurred (JNIEnv *env){ 
    615             assert( false, "implementation missing"); 
     620            //assert( false, "implementation missing"); 
    616621            return null; 
    617622        } 
     
    766771        } 
    767772        jint CallIntMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args){ 
    768             assert( false, "implementation missing"); 
     773            Method mth = cast(Method)cast(JObject)methodID; 
     774            char[] signature = mth.getSignature().toUtf8(); 
     775            JObjectImpl dobj = cast(JObjectImpl)cast(JObject)obj; 
     776 
     777 
     778            switch( signature ){ 
     779            case "": 
     780            { 
     781                alias int function( JObjectImpl ) F; 
     782                F fptr = cast(F) mth.getSlot(); 
     783                return fptr( dobj ); 
     784            } 
     785            case "I": 
     786            { 
     787                alias int function( JObjectImpl, int) F; 
     788                F fptr = cast(F) mth.getSlot(); 
     789                int a0 = va_arg!(int)(args); 
     790                return fptr( dobj, a0 ); 
     791            } 
     792            case "II": 
     793            { 
     794                alias int function(JObjectImpl, int,int) F; 
     795                F fptr = cast(F) mth.getSlot(); 
     796                int a0 = va_arg!(int)(args); 
     797                int a1 = va_arg!(int)(args); 
     798                return fptr( dobj, a0, a1 ); 
     799            } 
     800            case "III": 
     801            { 
     802                alias int function(JObjectImpl, int,int,int) F; 
     803                F fptr = cast(F) mth.getSlot(); 
     804                int a0 = va_arg!(int)(args); 
     805                int a1 = va_arg!(int)(args); 
     806                int a2 = va_arg!(int)(args); 
     807                return fptr( dobj, a0, a1, a2 ); 
     808            } 
     809            case "IIII": 
     810            { 
     811                alias int function(JObjectImpl, int,int,int,int) F; 
     812                F fptr = cast(F) mth.getSlot(); 
     813                int a0 = va_arg!(int)(args); 
     814                int a1 = va_arg!(int)(args); 
     815                int a2 = va_arg!(int)(args); 
     816                int a3 = va_arg!(int)(args); 
     817                return fptr( dobj, a0, a1, a2, a3 ); 
     818            } 
     819            case "IIIII": 
     820            { 
     821                alias int function(JObjectImpl,int,int,int,int,int) F; 
     822                F fptr = cast(F) mth.getSlot(); 
     823                int a0 = va_arg!(int)(args); 
     824                int a1 = va_arg!(int)(args); 
     825                int a2 = va_arg!(int)(args); 
     826                int a3 = va_arg!(int)(args); 
     827                int a4 = va_arg!(int)(args); 
     828                return fptr( dobj, a0, a1, a2, a3, a4 ); 
     829            } 
     830            case "IIIIII": 
     831            default: 
     832            Stdout.formatln( "call {} -> {} {}", dobj.classinfo.name, mth.getName().toUtf8, signature ); 
     833                assert( false ); 
     834            } 
    769835            return 0; 
    770836        } 
     
    10851151        } 
    10861152        jint CallStaticIntMethodV (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args){ 
    1087             assert( false, "implementation missing"); 
     1153            Method mth = cast(Method)cast(JObject)methodID; 
     1154            Class cls = cast(Class)cast(JObject)clazz; 
     1155            char[] signature = mth.getSignature().toUtf8(); 
     1156 
     1157 
     1158            switch( signature ){ 
     1159            case "": 
     1160            { 
     1161                alias int function() F; 
     1162                F fptr = cast(F) mth.getSlot(); 
     1163                return fptr(); 
     1164            } 
     1165            case "I": 
     1166            { 
     1167                alias int function(int) F; 
     1168                F fptr = cast(F) mth.getSlot(); 
     1169                int a0 = va_arg!(int)(args); 
     1170                return fptr( a0 ); 
     1171            } 
     1172            case "II": 
     1173            { 
     1174                alias int function(int,int) F; 
     1175                F fptr = cast(F) mth.getSlot(); 
     1176                int a0 = va_arg!(int)(args); 
     1177                int a1 = va_arg!(int)(args); 
     1178                return fptr( a0, a1 ); 
     1179            } 
     1180            case "III": 
     1181            case "IIII": 
     1182            case "IIIII": 
     1183            case "IIIIII": 
     1184            default: 
     1185            Stdout.formatln( "call static {} -> {} {}", cls.toUtf8, mth.getName().toUtf8, signature ); 
     1186                assert( false ); 
     1187            } 
    10881188            return 0; 
    10891189        } 
     
    14661566        jint AttachCurrentThread(JavaVM *vm, void **penv, void *args){ 
    14671567            //assert( false, "implementation missing"); 
     1568            *penv = JNIenv.getJniEnv(); 
     1569            //Stdout.formatln( "AttachCurrentThread()" ); 
    14681570            return 0; 
    14691571        } 
     
    14751577 
    14761578        jint GetEnv(JavaVM *vm, void **penv, jint version_){ 
    1477             *penv = & JNIenv.jni_env; 
     1579            *penv = JNIenv.getJniEnv(); 
     1580            //Stdout.formatln( "GetEnv()" ); 
    14781581            return 0; 
    14791582        } 
  • branches/jni/src/dejavu/dejavu/lang/Class.d

    r180 r181  
    9292    public Field findField( String aName, String aSig, bool aStatic ){ 
    9393        Field res = null; 
    94         foreach( Field fld; mFields ){ 
    95             if( fld.matches( aName, aSig, aStatic )){ 
    96                 if( res !is null ){ 
    97                     return null; // multiple matches 
    98                 } 
    99                 res = fld; 
    100             } 
    101         } 
     94        void searchIn( Class clazz ){ 
     95            foreach( Field fld; clazz.mFields ){ 
     96                if( fld.matches( aName, aSig, aStatic )){ 
     97                    if( res !is null ){ 
     98                        Stdout.formatln( "class {} has {} more than once", clazz.mCi.name, aName ); 
     99                        break; 
     100                    } 
     101                    res = fld; 
     102                } 
     103            } 
     104        } 
     105 
     106        Class cur = this; 
     107        do{ 
     108            if( cur !is this ){ 
     109                //Stdout.formatln( "findField in {}", cur.mCi.name ); 
     110            } 
     111            searchIn( cur ); 
     112            ClassInfo base = cur.mCi.base; 
     113            if( base !is null && res is null ){ 
     114                if( !( base.name in sInstances )){ 
     115                    Stdout.formatln( "{} not found", base.name ); 
     116                    cur = null; 
     117                } 
     118                else{ 
     119                    cur = sInstances[ cur.mCi.base.name ]; 
     120                } 
     121            } 
     122        }while( cur !is null && res is null ); 
     123 
    102124        return res; 
    103125    } 
  • branches/jni/src/dejavu/dejavu/lang/reflect/Method.d

    r175 r181  
    7171    } 
    7272 
     73    public int getSlot(){ 
     74        return slot; 
     75    } 
     76 
    7377    public dejavu.lang.reflect.Method.Method copy(){ 
    7478        assert( false, "implementation missing"); 
     
    8690    public int getModifiers(){ 
    8791        return modifiers; 
     92    } 
     93 
     94    public dejavu.lang.String.String getSignature(){ 
     95        return signature; 
    8896    } 
    8997 
  • branches/jni/src/tioport/de/tionex/port/Refactorings.d

    r180 r181  
    573573        case "with": 
    574574        case "sizeof": 
    575         case "mangleof ": 
     575        case "mangleof": 
    576576            //Stdout.formatln( "escape {0} in {1}", name, mModule.getFqn() ); 
    577577            return(name ~ "_KEYWORDESCAPE");