Not sure if I follow. The Pascal name can always be determined easily from the Java package and class names. See note 2 here:
http://web.fastermac.net/~MacPgmr/pba/PbaStatus.html#Tips
Yes, indeed that works somewhat. Seems like not many (or none) classes have the same name under package namespace with same first letters (.e.g.: java.lang.Integer vs java.lazy.Integer in which both will be abbreviated to JLInteger according to the convention).
Right, if there is a naming conflict you would not be able to compile the Pascal interface unit. In that case, just change the name of one of the abbreviated class names. The only thing that matters is the package and Java class name in the declaration. For example:
ADSSQLiteDatabase = class external 'android.database.sqlite' name 'SQLiteDatabase' (ADSSQLiteClosable)
It doesn't matter what you use for the Pascal name as long as the package and Java class name are correct. In the case of the android.jar runtime, it appears as though there are no naming conflicts that need to be worked around manually (see
http://wiki.freepascal.org/FPC_JVM/Building#Creating_the_Android_RTL_headers).
This is very much analogous to the way FPC's Objective Pascal dialect works. For example, if you want to call the setTitle:forState: method in the Objective-C UIButton class, here is how it would need to be declared in Pascal:
procedure setTitle_forState(title: NSString; state_: UIControlState); message 'setTitle:forState:';
The message specifies the actual Objective-C method name, meaning we can use whatever we want for the Pascal method name.
In both case, we're able to directly utilize the actual underlying classes (Java or Obj-C) in our Pascal code, with only minor compromises in syntax. This is really breakthrough technology and solves a lot of problems.
Thanks.
-Phil