| 297 | } |
| 298 | |
| 299 | Error GDScriptDecomp::get_script_state(const Vector<uint8_t> &p_buffer, ScriptState &r_state) { |
| 300 | const uint8_t *buf = p_buffer.ptr(); |
| 301 | GDSDECOMP_FAIL_COND_V_MSG(p_buffer.size() < 24 || !CHECK_GDSC_HEADER(p_buffer), ERR_INVALID_DATA, "Invalid GDScript tokenizer buffer."); |
| 302 | r_state.bytecode_version = decode_uint32(&buf[4]); |
| 303 | Error err; |
| 304 | if (r_state.bytecode_version >= GDSCRIPT_2_0_VERSION) { |
| 305 | err = get_ids_consts_tokens_v2(p_buffer, r_state.identifiers, r_state.constants, r_state.tokens, r_state.lines, r_state.end_lines, r_state.columns); |
| 306 | } else { |
| 307 | err = get_ids_consts_tokens(p_buffer, r_state.identifiers, r_state.constants, r_state.tokens, r_state.lines, r_state.columns); |
| 308 | } |
| 309 | if (err) { |
| 310 | return err; |
| 311 | } |
| 312 | |
| 313 | return OK; |
| 314 | } |
| 315 | |
| 316 | Error GDScriptDecomp::get_ids_consts_tokens(const Vector<uint8_t> &p_buffer, Vector<StringName> &identifiers, Vector<Variant> &constants, Vector<uint32_t> &tokens, HashMap<uint32_t, uint32_t> &lines, HashMap<uint32_t, uint32_t> &columns) { |
| 317 | const uint8_t *buf = p_buffer.ptr(); |