* pas2jni: More clean Java code for sets.

git-svn-id: trunk@34951 -
This commit is contained in:
yury 2016-11-23 13:33:35 +00:00
parent 8f4f40d240
commit 4dcc9de92f

View File

@ -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<TS extends 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<TS extends BaseSet,TE extends Enum> 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('}');