[armedbear-devel] DEFUN (SETF ...)s
logicmoo at gmail.com
logicmoo at gmail.com
Mon Nov 23 20:13:04 UTC 2009
Help me out!
I made a class called: TestClass
------------------------src/dmiles/TestClass.java---------------------
package dmiles
public class TestClass {
static public String StaticField = "fresh";
}
-------------------------------------------------------------------------
Now in the REPL everything works fine.
Armed Bear Common Lisp 0.18.0-dev (built Mon Nov 23 2009 06:46:01 PST)
Java 1.6.0_10 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.658 seconds.
Startup completed in 1.877 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (defun (setf jfield)
(newvalue class-ref-or-field field-or-instance &optional ( instance :noinst) unused-value)
(declare (ignorable unused-value))
(if (eq instance :noinst)
(jfield class-ref-or-field field-or-instance newvalue)
(jfield class-ref-or-field field-or-instance instance newvalue)))
(SETF JFIELD)
CL-USER(2): (jfield "dmiles.TestClass" "StaticField")
"fresh"
CL-USER(3): (define-symbol-macro %TESTSYM (jfield "dmiles.TestClass" "StaticField"))
%TESTSYM
CL-USER(4): CL-USER(4): %TESTSYM
"fresh"
CL-USER(5): (setf %TESTSYM "flithy")
"flithy"
CL-USER(6): %TESTSYM
"flithy"
CL-USER(7): (jfield "dmiles.TestClass" "StaticField")
"flithy"
CL-USER(8):
---------------------------------------------------------------------------------
Question: locally I added this to the bottem of java.lisp
(defun (setf jfield) (newvalue class-ref-or-field field-or-instance &optional ( instance :noinst) unused-value)
(declare (ignorable unused-value))
(if (eq instance :noinst)
(jfield class-ref-or-field field-or-instance newvalue)
(jfield class-ref-or-field field-or-instance instance newvalue)))
Cleaned and rebuilt the system..
To test it:
Armed Bear Common Lisp 0.18.0-dev (built Mon Nov 23 2009 12:07:35 PST)
Java 1.6.0_10 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.564 seconds.
Startup completed in 1.651 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (jfield "dmiles.TestClass" "StaticField")
"fresh"
CL-USER(2): (define-symbol-macro %TESTSYM (jfield "dmiles.TestClass" "StaticField"))
%TESTSYM
CL-USER(3): %TESTSYM
"fresh"
CL-USER(4): (setf %TESTSYM "flithy")
Debugger invoked on condition of type UNDEFINED-FUNCTION:
The function (SETF JFIELD) is undefined.
Restarts:
0: TOP-LEVEL Return to top level.
[1] CL-USER(5): :bt
0: (SYSTEM:BACKTRACE)
1: (INVOKE-DEBUGGER #<UNDEFINED-FUNCTION {50E26AE7}>)
2: org.armedbear.lisp.Lisp.error(Lisp.java:365)
3: org.armedbear.lisp.SpecialOperators$14.execute(SpecialOperators.java:493)
4: org.armedbear.lisp.Lisp.eval(Lisp.java:461)
5: org.armedbear.lisp.Lisp.evalCall(Lisp.java:501)
6: org.armedbear.lisp.Lisp.eval(Lisp.java:471)
7: org.armedbear.lisp.Lisp.progn(Lisp.java:640)
[1] CL-USER(6):
Hw do a add a new (defun (setf ..) .. .) to the library?
More information about the armedbear-devel
mailing list