forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
60
Kha/Tools/macos/std/cs/_std/haxe/NativeStackTrace.hx
Normal file
60
Kha/Tools/macos/std/cs/_std/haxe/NativeStackTrace.hx
Normal file
@ -0,0 +1,60 @@
|
||||
package haxe;
|
||||
|
||||
import haxe.CallStack.StackItem;
|
||||
import cs.system.diagnostics.StackTrace;
|
||||
|
||||
/**
|
||||
Do not use manually.
|
||||
**/
|
||||
@:dox(hide)
|
||||
@:noCompletion
|
||||
class NativeStackTrace {
|
||||
@:meta(System.ThreadStaticAttribute)
|
||||
static var exception:Null<cs.system.Exception>;
|
||||
|
||||
@:ifFeature('haxe.NativeStackTrace.exceptionStack')
|
||||
static public inline function saveStack(e:Any):Void {
|
||||
exception = e;
|
||||
}
|
||||
|
||||
static public inline function callStack():StackTrace {
|
||||
return new StackTrace(1, true);
|
||||
}
|
||||
|
||||
static public function exceptionStack():Null<StackTrace> {
|
||||
return switch exception {
|
||||
case null: null;
|
||||
case e: new StackTrace(e, true);
|
||||
}
|
||||
}
|
||||
|
||||
static public function toHaxe(native:Null<StackTrace>, skip:Int = 0):Array<StackItem> {
|
||||
var stack = [];
|
||||
if(native == null) {
|
||||
return stack;
|
||||
}
|
||||
var cnt = 0;
|
||||
for (i in 0...native.FrameCount) {
|
||||
var frame = native.GetFrame(i);
|
||||
var m = frame.GetMethod();
|
||||
|
||||
if (m == null) {
|
||||
continue;
|
||||
}
|
||||
if(skip > cnt++) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var method = StackItem.Method(m.ReflectedType.ToString(), m.Name);
|
||||
|
||||
var fileName = frame.GetFileName();
|
||||
var lineNumber = frame.GetFileLineNumber();
|
||||
|
||||
if (fileName != null || lineNumber >= 0)
|
||||
stack.push(FilePos(method, fileName, lineNumber));
|
||||
else
|
||||
stack.push(method);
|
||||
}
|
||||
return stack;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user