View Javadoc

1   package com.sharkysoft.printf;
2   
3   import java.math.BigInteger;
4   import com.sharkysoft.printf.engine.IntegerFormatter;
5   
6   abstract class Formatter_Integer extends Formatter_Number
7   {
8   
9     Formatter_Integer(final FormatSpecifier ipPfs)
10    {
11      super(ipPfs, new IntegerFormatter());
12      final IntegerFormatter vpFormatter = (IntegerFormatter) mpFormatter;
13      if (ipPfs.mnPrecision == FormatSpecifier.PRECISION_UNSPECIFIED)
14        vpFormatter.setMinDigits(1);
15      else
16        vpFormatter.setMinDigits(ipPfs.mnPrecision);
17    }
18    
19    void adjustWidthAndPrecision(final PrintfState ipPs)
20    {
21      adjustWidth(ipPs);
22      if (mzVariablePrecision)
23        ( (IntegerFormatter) mpFormatter
24        ).setMinDigits
25        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).intValue()
26        );
27    }
28  
29    void formatSignedInt(final PrintfState ipPs)
30    {
31      adjustWidthAndPrecision(ipPs);
32      ipPs.mpOutput.append
33      ( ( (IntegerFormatter) mpFormatter
34        ).format
35        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).intValue()
36        )
37      );
38    }
39    
40    void formatSignedLong(final PrintfState ipPs)
41    {
42      adjustWidthAndPrecision(ipPs);
43      ipPs.mpOutput.append
44      ( ( (IntegerFormatter) mpFormatter
45        ).format
46        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).longValue()
47        )
48      );
49    }
50    
51    void formatSignedShort(final PrintfState ipPs)
52    {
53      adjustWidthAndPrecision(ipPs);
54      ipPs.mpOutput.append
55      ( ( (IntegerFormatter) mpFormatter
56        ).format
57        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).shortValue()
58        )
59      );
60    }
61    
62    void formatSignedByte(final PrintfState ipPs)
63    {
64      adjustWidthAndPrecision(ipPs);
65      ipPs.mpOutput.append
66      ( ( (IntegerFormatter) mpFormatter
67        ).format
68        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).byteValue()
69        )
70      );
71    }
72    
73    void formatSignedBigInteger(final PrintfState ipPs)
74    {
75      adjustWidthAndPrecision(ipPs);
76      ipPs.mpOutput.append
77      ( ( (IntegerFormatter) mpFormatter
78        ).format
79        ( (BigInteger) ipPs.mapArgs[ipPs.mnArgIndex++]
80        )
81      );
82    }
83    
84    void formatUnsignedInt(final PrintfState ipPs)
85    {
86      adjustWidthAndPrecision(ipPs);
87      ipPs.mpOutput.append
88      ( ( (IntegerFormatter) mpFormatter
89        ).formatUnsigned
90        ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).intValue()
91        )
92      );
93    }
94    
95    void formatUnsignedLong(final PrintfState ipPs)
96    {
97      adjustWidthAndPrecision(ipPs);
98      ipPs.mpOutput.append
99      ( ( (IntegerFormatter) mpFormatter
100       ).formatUnsigned
101       ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).longValue()
102       )
103     );
104   }
105   
106   void formatUnsignedShort(final PrintfState ipPs)
107   {
108     adjustWidthAndPrecision(ipPs);
109     ipPs.mpOutput.append
110     ( ( (IntegerFormatter) mpFormatter
111       ).formatUnsigned
112       ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).shortValue()
113       )
114     );
115   }
116   
117   void formatUnsignedByte(final PrintfState ipPs)
118   {
119     adjustWidthAndPrecision(ipPs);
120     ipPs.mpOutput.append
121     ( ( (IntegerFormatter) mpFormatter
122       ).formatUnsigned
123       ( ((Number) ipPs.mapArgs[ipPs.mnArgIndex++]).byteValue()
124       )
125     );
126   }
127   
128   void formatUnsignedBigInteger(final PrintfState ipPs)
129   {
130     adjustWidthAndPrecision(ipPs);
131     final BigInteger vpBi = (BigInteger) ipPs.mapArgs[ipPs.mnArgIndex++];
132     ipPs.mpOutput.append(((IntegerFormatter) mpFormatter).format(vpBi));
133   }
134 }
135