[Nice-commit] Nice/src/bossa/syntax NiceClass.java,1.66,1.67
Brought to you by:
bonniot
From: <ar...@us...> - 2003-11-22 01:06:03
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv23830/F:/nice/src/bossa/syntax Modified Files: NiceClass.java Log Message: generate getters/setters in bytecode of fields in Nice classes. (not used yet) Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** NiceClass.java 21 Nov 2003 08:09:58 -0000 1.66 --- NiceClass.java 22 Nov 2003 01:06:00 -0000 1.67 *************** *** 22,26 **** import nice.tools.code.Types; ! import nice.tools.code.Gen; /** --- 22,26 ---- import nice.tools.code.Types; ! import nice.tools.code.*; /** *************** *** 196,199 **** --- 196,227 ---- method.fieldDecl.setFlag(isTransient, gnu.expr.Declaration.TRANSIENT); method.fieldDecl.setFlag(isVolatile , gnu.expr.Declaration.VOLATILE); + + String fname = sym.getName().toString(); + String suffix = Character.toUpperCase(fname.charAt(0)) + fname.substring(1); + createGetter(suffix); + if (!isFinal) + createSetter(suffix); + } + + void createGetter(String nameSuffix) + { + gnu.expr.Expression[] params = new gnu.expr.Expression[1]; + gnu.expr.LambdaExp getter = Gen.createMemberMethod + ("get"+nameSuffix, classe.getType(), null, + method.fieldDecl.getType(), params); + Gen.setMethodBody(getter, Inline.inline(new GetFieldProc(method.fieldDecl), params[0])); + classe.addMethod(getter); + } + + void createSetter(String nameSuffix) + { + gnu.expr.Expression[] params = new gnu.expr.Expression[2]; + gnu.bytecode.Type[] argTypes = new gnu.bytecode.Type[1]; + argTypes[0] = method.fieldDecl.getType(); + gnu.expr.LambdaExp setter = Gen.createMemberMethod + ("set"+nameSuffix, classe.getType(), argTypes, + method.fieldDecl.getType(), params); + Gen.setMethodBody(setter, Inline.inline(new SetFieldProc(method.fieldDecl), params[0], params[1])); + classe.addMethod(setter); } |