proper use of define-alias

Chuah Teong Leong teongleong@gmail.com
Sun Jun 24 05:06:00 GMT 2012


Thanks Alcides.

The reason I started using define-alias was
(define vert-sb-always
       javax.swing.ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS)

Throws me this kind of error just from having the above line of code.
Any idea what could be wrong?

java kawa.repl sandbox.scm

exception while initializing module scrollpane
        at gnu.expr.ModuleContext.findInstance(ModuleContext.java:84)
        at gnu.expr.ModuleContext.findInstance(ModuleContext.java:57)
        at gnu.expr.ModuleInfo.getInstance(ModuleInfo.java:272)
        at kawa.standard.require.find(require.java:120)
        at sandbox.run(sandbox.scm:5)
        at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:279)
        at gnu.expr.CompiledModule.evalModule(CompiledModule.java:41)
        at gnu.expr.CompiledModule.evalModule(CompiledModule.java:60)
        at kawa.Shell.runFile(Shell.java:510)
        at kawa.Shell.runFileOrClass(Shell.java:426)
        at kawa.repl.main(repl.java:873)
Caused by: java.lang.VerifyError: (class: scrollpane, method: run signature: (Lg
nu/mapping/CallContext;)V) Expecting to find integer on stack
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
        at java.lang.Class.getDeclaredField(Class.java:1880)
        at gnu.expr.ModuleContext.findInstance(ModuleContext.java:74)
        ... 10 more

On Fri, Jun 22, 2012 at 11:33 PM, Alcides Flores Pineda
<alcides.fp@gmail.com> wrote:
> Hello Chuah:
>
> According to Kawa's documentation, (despite it  may not be very clear
> here to newbie programmers) define-alias is for aliasing Java Classes
> or Java Packages (aka "locations") NOT numerical constants.
>
> If you evaluate in the Kawa REPL the mentioned constants you'll get
> their numerical values. Example:
>
> #|kawa:1|# javax.swing.ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS
> 22
>
> (By the way, the angle-bracket syntax is now considered deprecated as
> far as I know)
>
> So the right way to accomplish what you are trying to do is either use:
>
> (define vert-sb-always
>        javax.swing.ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS)
>
> Or
>
> (define-alias ScrollPaneConstants javax.swing.ScrollPaneConstants)
>
> and then use
>
> ScrollPaneConstants:VERTICAL_SCROLLBAR_ALWAYS
>
> whenever you need the mentioned constant.
>
> Greetings.
>
> Alcides Flores Pineda.
>
>> El Fri, 22 Jun 2012 16:57:04 +0800
>> Chuah Teong Leong <teongleong@gmail.com> escribió:
>> A shorter version of my question is as follows
>>
>> (define-alias vert-sb-always
>> <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_ALWAYS)
>>
>> (define-alias hori-sb-always
>> <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_ALWAYS)
>>
>> ;; this doesnt work
>> (let ((myvar vert-sb-always)
>>        (myvar2 hori-sb-always))
>>
>> (make-scrollpane-with-policy in-component
>>                                      myvar myvar2))
>>
>> why cant i assign a temp variable like that and use it like that?
>>
>>
>> in the previous example using vpolicy and hpolicy throws an exception
>>
>> ;; choose the correct constant based on the symbol passed in
>>  (define vpolicy
>>    (case vp-sym
>>      ((always) vert-sb-always)
>>      ((needed) vert-sb-needed)
>>      ((never) vert-sb-never)
>>      (else (display "Error unknown policy ")(display vp-sym)
>>            vert-sb-needed)))
>>
>>   (define hpolicy
>>    (case hp-sym
>>      ((always) hori-sb-always)
>>      ((needed) hori-sb-needed)
>>      ((never) hori-sb-never)
>>      (else (display "Error unknown policy ")(display hp-sym)
>>            hori-sb-needed)))
>>
>>   (<javax.swing.JScrollPane> in-component vpolicy hpolicy)
>>
>> whereas...
>>
>> this works
>>  (<javax.swing.JScrollPane>
>>    in-component
>>    (case vp-sym
>>      ((always) vert-sb-always)
>>      ((needed) vert-sb-needed)
>>      ((never) vert-sb-never)
>>      (else (display "Error unknown policy ")(display vp-sym)
>>            vert-sb-needed))
>>      (case hp-sym
>>      ((always) hori-sb-always)
>>      ((needed) hori-sb-needed)
>>      ((never) hori-sb-never)
>>      (else (display "Error unknown policy ")(display hp-sym)
>>            hori-sb-needed)))
>>
>> so essentially my problem is with why there's a problem with assigning
>> a temp variable to the define-alias variables
>>
>>
>> On Thu, Jun 21, 2012 at 11:11 PM, Chuah Teong Leong
>> <teongleong@gmail.com> wrote:
>> > hi. I'm new to the use of define-alias and I was trying to use it
>> > as follows.
>> >
>> > Exception:
>> > Value '20' for variable 'vpolicy' has wrong type
>> > (java.lang.Integer) (java.lang. Integer cannot be cast to
>> > gnu.mapping.Location)
>> >
>> > (define-alias vert-sb-always
>> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_ALWAYS)
>> > (define-alias vert-sb-needed
>> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_AS_NEEDED)
>> > (define-alias vert-sb-never
>> > <javax.swing.ScrollPaneConstants>:VERTICAL_SCROLLBAR_NEVER)
>> >
>> > (define-alias hori-sb-always
>> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_ALWAYS)
>> > (define-alias hori-sb-needed
>> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_AS_NEEDED)
>> > (define-alias hori-sb-never
>> > <javax.swing.ScrollPaneConstants>:HORIZONTAL_SCROLLBAR_NEVER)
>> >
>> > (define (make-scrollpane in-component :: <javax.swing.JComponent>)
>> >  (<javax.swing.JScrollPane> in-component))
>> >
>> > ;; make a scrollpane with policy
>> > (define (make-scrollpane-with-policy in-component ::
>> > <javax.swing.JComponent> vp-sym :: <symbol>
>> >                                     hp-sym :: <symbol> )
>> >
>> > ;; choose the correct constant based on the symbol passed in
>> >  (define vpolicy
>> >    (case vp-sym
>> >      ((always) vert-sb-always)
>> >      ((needed) vert-sb-needed)
>> >      ((never) vert-sb-never)
>> >      (else (display "Error unknown policy ")(display vp-sym)
>> >            vert-sb-needed)))
>> >
>> >   (define hpolicy
>> >    (case hp-sym
>> >      ((always) hori-sb-always)
>> >      ((needed) hori-sb-needed)
>> >      ((never) hori-sb-never)
>> >      (else (display "Error unknown policy ")(display hp-sym)
>> >            hori-sb-needed)))
>> >
>> >   (<javax.swing.JScrollPane> in-component vpolicy hpolicy)
>> >  )
>> >
>> > What is the proper way of doing what I want to do here?
>



More information about the Kawa mailing list