--- parser3/src/classes/reflection.C 2026/04/25 13:38:46 1.104 +++ parser3/src/classes/reflection.C 2026/10/05 19:47:29 1.106 @@ -10,8 +10,9 @@ #include "pa_vbool.h" #include "pa_varray.h" #include "pa_vobject.h" +#include "pa_vtable.h" -volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.104 2026/04/25 13:38:46 moko Exp $"; +volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.106 2026/10/05 19:47:29 moko Exp $"; static const String class_type_methoded("methoded"); @@ -403,6 +404,14 @@ static void _filename(Request& r, Method } } +static void _used(Request& r, MethodParams&) { + VArray& result=*new VArray; + ArrayValue& files=result.array(); + for(uint file_no=pseudo_file_no__process+1; const String* file_spec=r.get_used_filespec(file_no); file_no++) + files+=new VString(*file_spec); + r.write(result); +} + static void _dynamical(Request& r, MethodParams& params) { if(params.count()){ r.write(VBool::get(params[0].get_class() != ¶ms[0])); @@ -606,6 +615,12 @@ static void collect_local(const String:: } static void _stack(Request& r, MethodParams& params) { + if(params.count()) + if(VException* exception=dynamic_cast(¶ms[0])) { + r.write(*new VTable(&exception->stack(r))); + return; + } + bool show_args=false; bool show_locals=false; @@ -739,6 +754,9 @@ MReflection::MReflection(): Methoded("re // ^reflection:filename[object or class or method] add_native_method("filename", Method::CT_STATIC, _filename, 1, 1); + // ^reflection:used[] + add_native_method("used", Method::CT_STATIC, _used, 0, 0); + // ^reflection:fields[object or class] add_native_method("fields", Method::CT_STATIC, _fields, 1, 1);