From 4dcc9de92f310785df060f34f86c8f35ebc8fb2e Mon Sep 17 00:00:00 2001 From: yury Date: Wed, 23 Nov 2016 13:33:35 +0000 Subject: [PATCH] * pas2jni: More clean Java code for sets. git-svn-id: trunk@34951 - --- utils/pas2jni/writer.pas | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/utils/pas2jni/writer.pas b/utils/pas2jni/writer.pas index f0bbf5b1bd..6f2f77ef4a 100644 --- a/utils/pas2jni/writer.pas +++ b/utils/pas2jni/writer.pas @@ -1476,10 +1476,9 @@ begin Fjs.WriteLn(Format('public static class %s extends %s.system.Set<%s,%s> {', [d.Name, JavaPackage, d.Name, d.ElType.Name])); Fjs.IncI; - Fjs.WriteLn(Format('protected byte Size() { return %d; }', [d.Size])); - Fjs.WriteLn(Format('protected int Base() { return %d; }', [d.Base])); - Fjs.WriteLn(Format('protected int ElMax() { return %d; }', [d.ElMax])); - Fjs.WriteLn(Format('protected int Ord(%s Element) { return Element.Ord(); }', [d.ElType.Name])); + Fjs.WriteLn(Format('@Override protected byte Size() { return %d; }', [d.Size])); + Fjs.WriteLn(Format('@Override protected int Base() { return %d; }', [d.Base])); + Fjs.WriteLn(Format('@Override protected int ElMax() { return %d; }', [d.ElMax])); Fjs.WriteLn(Format('public %s() { }', [d.Name])); Fjs.WriteLn(Format('public %s(%s... Elements) { super(Elements); }', [d.Name, d.ElType.Name])); Fjs.WriteLn(Format('public %0:s(%0:s... Elements) { super(Elements); }', [d.Name])); @@ -1880,18 +1879,19 @@ begin Fjs.WriteLn; // Base class for Set - Fjs.WriteLn('public static class Set,TE extends Enum> {'); + Fjs.WriteLn('private static abstract class BaseSet {'); Fjs.IncI; Fjs.WriteLn('protected int Value = 0;'); - Fjs.WriteLn('protected byte Size() { return 0; }'); - Fjs.WriteLn('protected int Base() { return 0; }'); - Fjs.WriteLn('protected int ElMax() { return 0; }'); - Fjs.WriteLn('protected int Ord(TE Element) { return 0; }'); - Fjs.WriteLn('protected int GetMask(TE Element) {'); - Fjs.IncI; - Fjs.WriteLn('return 1 << (Ord(Element) - Base());'); + Fjs.WriteLn('protected abstract byte Size();'); + Fjs.WriteLn('protected abstract int Base();'); + Fjs.WriteLn('protected abstract int ElMax();'); + Fjs.WriteLn('public BaseSet() { }'); Fjs.DecI; Fjs.WriteLn('}'); + + Fjs.WriteLn('public static abstract class Set extends BaseSet {'); + Fjs.IncI; + Fjs.WriteLn('protected int GetMask(TE Element) { return 1 << (Element.Ord() - Base()); }'); Fjs.WriteLn('public Set() { }'); Fjs.WriteLn('public Set(TE... Elements) { Include(Elements); }'); Fjs.WriteLn('public Set(TS... Elements) { for (TS e : Elements) Include(e); }'); @@ -1904,7 +1904,7 @@ begin Fjs.WriteLn('public boolean Has(TE Element) { return (Value & GetMask(Element)) != 0; }'); Fjs.WriteLn('public boolean IsEmpty() { return Value == 0; }'); Fjs.WriteLn('public boolean equals(TS s) { return Value == s.Value; }'); - Fjs.WriteLn('public boolean equals(TE Element) { return Value == Ord(Element); }'); + Fjs.WriteLn('public boolean equals(TE Element) { return Value == Element.Ord(); }'); Fjs.WriteLn('public boolean equals(int Element) { return Value == Element; }'); Fjs.DecI; Fjs.WriteLn('}');