public static void PyCode_New(DkmThread thread, ulong frameBase, ulong vframe, ulong returnAddress) { var process = thread.Process; CppExpressionEvaluator cppEval = new CppExpressionEvaluator(thread, frameBase, vframe); var filenamePtr = cppEval.EvaluateUInt64("filename"); IPyBaseStringObject filenameObj = PyObject.FromAddress(process, filenamePtr) as IPyBaseStringObject; if (filenameObj == null) { return; } string filename = filenameObj.ToString(); if (process.GetPythonRuntimeInstance().GetModuleInstances().Any(mi => mi.FullName == filename)) { return; } new RemoteComponent.CreateModuleRequest { ModuleId = Guid.NewGuid(), FileName = filename }.SendLower(process); }
private IEnumerable <PythonEvaluationResult> GetDebugChildrenFromDict(PyDictObject dict) { foreach (var pair in dict.ReadElements()) { IPyBaseStringObject name = pair.Key as IPyBaseStringObject; if (name != null && !pair.Value.IsNull) { yield return(new PythonEvaluationResult(pair.Value, name.ToString())); } } }
public static string ToStringOrNull(this IPyBaseStringObject s) { return(s == null ? null : s.ToString()); }