MCPcopy Create free account
hub / github.com/adventuregamestudio/ags / QueryScriptVariableInContext

Function QueryScriptVariableInContext

Engine/debug/memory_inspect.cpp:676–706  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

674}
675
676HError QueryScriptVariableInContext(const ScriptExecutor *exec, const String &var_ref, VariableInfo &var_info)
677{
678 if (var_ref.IsNullOrSpace())
679 return new Error("Bad input"); // no name
680
681 if (!exec->GetRunningScript())
682 return new Error("No running script"); // not in running script
683
684 MemoryReference mem_ref;
685 FieldInfo var_field_info;
686 HError err = VariableRefToMemoryRef(var_ref, exec, mem_ref, var_field_info);
687 if (!err)
688 return err; // failed to parse variable name chain
689
690 MemoryValue mem_value;
691 if (ResolveMemory(mem_ref, 0u, mem_value))
692 {
693 String type_name = var_field_info.Type->name;
694 if (var_field_info.FieldFlags & RTTI::kField_Array)
695 {
696 if (var_field_info.NumElems > 0)
697 type_name.AppendFmt("[%u]", var_field_info.NumElems);
698 else
699 type_name.Append("[]");
700 }
701 var_info = VariableInfo(mem_value.Value, type_name, mem_value.TypeHint);
702 return HError::None();
703 }
704 cc_clear_error(); // reset script error in case resolving memory went wrong
705 return new Error("Failed to resolve script memory");
706}
707
708} // namespace MemoryInspect
709} // namespace Engine

Callers 1

Calls 8

VariableRefToMemoryRefFunction · 0.85
ResolveMemoryFunction · 0.85
cc_clear_errorFunction · 0.85
IsNullOrSpaceMethod · 0.80
GetRunningScriptMethod · 0.80
AppendFmtMethod · 0.80
VariableInfoClass · 0.70
AppendMethod · 0.45

Tested by

no test coverage detected