This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: proper use of define-alias


ahh how blind of me its a private field and it is asking me to do a
define-private.
Thanks you for your reply

On Sun, Jun 24, 2012 at 1:06 PM, Chuah Teong Leong <teongleong@gmail.com> wrote:
> 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?
>>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]