1 /
55
56
61 package org.apache.poi.hssf.record.formula;
62
63 import org.apache.poi.util.LittleEndian;
64 import org.apache.poi.util.BitField;
65
66 import java.util.List;
67
68
74
75 public class AttrPtg
76 extends OperationPtg
77 {
78 public final static short sid = 0x19;
79 private final static int SIZE = 4;
80 private byte field_1_options;
81 private short field_2_data;
82 private BitField semiVolatile = new BitField(0x01);
83 private BitField optiIf = new BitField(0x02);
84 private BitField optiChoose = new BitField(0x04);
85 private BitField optGoto = new BitField(0x08);
86 private BitField sum = new BitField(0x10);
87 private BitField baxcel = new BitField(0x20);
88 private BitField space = new BitField(0x40);
89
90 public AttrPtg() {
91 }
92
93 public AttrPtg(byte [] data, int offset)
94 {
95 offset++;
96 field_1_options = data[ offset + 0 ];
97 field_2_data = LittleEndian.getShort(data, offset + 1);
98 System.out.println("OPTIONS = " + Integer.toHexString(getOptions()));
99 System.out.println("OPTIONS & 0x10 = " + (getOptions() & 0x10));
100 System.out.println(toString());
101 }
102
103 public void setOptions(byte options)
104 {
105 field_1_options = options;
106 }
107
108 public byte getOptions()
109 {
110 return field_1_options;
111 }
112
113 public boolean isSemiVolatile()
114 {
115 return semiVolatile.isSet(getOptions());
116 }
117
118 public boolean isOptimizedIf()
119 {
120 return optiIf.isSet(getOptions());
121 }
122
123 public boolean isOptimizedChoose()
124 {
125 return optiChoose.isSet(getOptions());
126 }
127
128
129 public boolean isGoto()
130 {
131 return optGoto.isSet(getOptions());
132 }
133
134 public boolean isSum()
135 {
136 return sum.isSet(getOptions());
137 }
138
139 public void setSum(boolean bsum) {
140 field_1_options=sum.setByteBoolean(field_1_options,bsum);
141 }
142
143
144 public boolean isBaxcel()
145 {
146 return baxcel.isSet(getOptions());
147 }
148
149
150 public boolean isSpace()
151 {
152 return space.isSet(getOptions());
153 }
154
155 public void setData(short data)
156 {
157 field_2_data = data;
158 }
159
160 public short getData()
161 {
162 return field_2_data;
163 }
164
165 public String toString()
166 {
167 StringBuffer buffer = new StringBuffer();
168
169 buffer.append("AttrPtg\n");
170 buffer.append("options=").append(field_1_options).append("\n");
171 buffer.append("data =").append(field_2_data).append("\n");
172 buffer.append("semi =").append(isSemiVolatile()).append("\n");
173 buffer.append("optimif=").append(isOptimizedIf()).append("\n");
174 buffer.append("optchos=").append(isOptimizedChoose()).append("\n");
175 buffer.append("isGoto =").append(isGoto()).append("\n");
176 buffer.append("isSum =").append(isSum()).append("\n");
177 buffer.append("isBaxce=").append(isBaxcel()).append("\n");
178 buffer.append("isSpace=").append(isSpace()).append("\n");
179 return buffer.toString();
180 }
181
182 public void writeBytes(byte [] array, int offset)
183 {
184 array[offset]=sid;
185 array[offset+1]=field_1_options;
186 LittleEndian.putShort(array,offset+2,field_2_data);
187 }
188
189 public int getSize()
190 {
191 return SIZE;
192 }
193
194 public String toFormulaString()
195 {
196 return "SUM()";
197 }
198
199 public int getNumberOfOperands()
200 {
201 return 1;
202 }
203
204 public int getType()
205 {
206 return -1;
207 }
208
209 public String toFormulaString(String[] operands) {
210 return "SUM(" + operands[ 0 ] + ")";
211 }
212
213
214
215 }
216