mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 18:09:27 +02:00
* pas2jni: More clean Java code for sets.
git-svn-id: trunk@34951 -
This commit is contained in:
parent
8f4f40d240
commit
4dcc9de92f
@ -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('}');
|
||||
|
Loading…
Reference in New Issue
Block a user