MCPcopy Create free account
hub / github.com/Hiro420/NikkeTools / LConstantType54

Class LConstantType54

UnLuac/src/unluac/parse/LConstantType.java:161–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161class 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}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected