| 2135 | } |
| 2136 | |
| 2137 | String GDScriptDecomp::get_token_text(const ScriptState &p_script_state, uint32_t i) { |
| 2138 | if (i >= p_script_state.tokens.size()) { |
| 2139 | return "ERROR: Invalid token index"; |
| 2140 | } |
| 2141 | uint32_t local_token = p_script_state.tokens[i] & TOKEN_MASK; |
| 2142 | GlobalToken token_id = get_global_token(local_token); |
| 2143 | uint32_t token_val = p_script_state.tokens[i] >> TOKEN_BITS; |
| 2144 | switch (token_id) { |
| 2145 | case G_TK_EMPTY: { |
| 2146 | return ""; |
| 2147 | } break; |
| 2148 | case G_TK_ANNOTATION: // fallthrough |
| 2149 | case G_TK_IDENTIFIER: { |
| 2150 | if (token_val >= (uint32_t)p_script_state.identifiers.size()) { |
| 2151 | return "ERROR: Invalid identifier index"; |
| 2152 | } |
| 2153 | return String(p_script_state.identifiers[token_val]); |
| 2154 | } break; |
| 2155 | case G_TK_CONSTANT: { |
| 2156 | if (token_val >= (uint32_t)p_script_state.constants.size()) { |
| 2157 | return "ERROR: Invalid constant index"; |
| 2158 | } |
| 2159 | return get_constant_string(p_script_state.constants, token_val); |
| 2160 | } break; |
| 2161 | case G_TK_BUILT_IN_TYPE: { |
| 2162 | return VariantDecoderCompat::get_variant_type_name(token_val, get_variant_ver_major()); |
| 2163 | } break; |
| 2164 | case G_TK_BUILT_IN_FUNC: { |
| 2165 | if (token_val >= static_cast<uint32_t>(get_function_count())) { |
| 2166 | return "ERROR: Invalid function index"; |
| 2167 | } |
| 2168 | return get_function_name(token_val); |
| 2169 | } break; |
| 2170 | default: |
| 2171 | break; |
| 2172 | } |
| 2173 | return get_global_token_text(token_id); |
| 2174 | } |
| 2175 | |
| 2176 | String GDScriptDecomp::get_global_token_text(GlobalToken p_token_id) { |
| 2177 | switch (p_token_id) { |