| 159 | } |
| 160 | |
| 161 | class LConstantType54 extends LConstantType { |
| 162 | |
| 163 | @Override |
| 164 | public LObject parse(ByteBuffer buffer, BHeader header) { |
| 165 | int type = 0xFF & buffer.get(); |
| 166 | switch(type) { |
| 167 | case 0: |
| 168 | return LNil.NIL; |
| 169 | case 1: |
| 170 | return LBoolean.LFALSE; |
| 171 | case 0x11: |
| 172 | return LBoolean.LTRUE; |
| 173 | case 3: |
| 174 | return header.linteger.parse(buffer, header); |
| 175 | case 0x13: |
| 176 | return header.lfloat.parse(buffer, header); |
| 177 | case 4: |
| 178 | return header.string.parse(buffer, header); |
| 179 | case 0x14: { |
| 180 | LString s = header.string.parse(buffer, header); |
| 181 | s.islong = true; |
| 182 | return s; |
| 183 | } |
| 184 | default: |
| 185 | throw new IllegalStateException(); |
| 186 | } |
| 187 | } |
| 188 | |
| 189 | @Override |
| 190 | public void write(OutputStream out, BHeader header, LObject object) throws IOException { |
| 191 | if(object instanceof LNil) { |
| 192 | out.write(0); |
| 193 | } else if(object instanceof LBoolean) { |
| 194 | if(((LBoolean) object).value()) { |
| 195 | out.write(0x11); |
| 196 | } else { |
| 197 | out.write(1); |
| 198 | } |
| 199 | } else if(object instanceof LNumber) { |
| 200 | LNumber n = (LNumber)object; |
| 201 | if(!n.integralType()) { |
| 202 | out.write(0x13); |
| 203 | header.lfloat.write(out, header, (LNumber)object); |
| 204 | } else { |
| 205 | out.write(3); |
| 206 | header.linteger.write(out, header, (LNumber)object); |
| 207 | } |
| 208 | } else if(object instanceof LString) { |
| 209 | LString s = (LString) object; |
| 210 | out.write(s.islong ? 0x14 : 4); |
| 211 | header.string.write(out, header, s); |
| 212 | } else { |
| 213 | throw new IllegalStateException(); |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | } |
nothing calls this directly
no outgoing calls
no test coverage detected