瀏覽代碼

Added module state

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7245 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 年之前
父節點
當前提交
6556c00e4f
共有 1 個文件被更改,包括 25 次插入1 次删除
  1. 25 1
      source/SystemTools.Mod

+ 25 - 1
source/SystemTools.Mod

@@ -1,7 +1,7 @@
 MODULE SystemTools; (** AUTHOR "TF"; PURPOSE "Access to System Functions"; *)
 
 IMPORT
-	Machine, Modules, Objects, Commands, Options, ProcessInfo, Kernel, Streams, Dates, Strings, Plugins, Files, SystemVersion, Heaps;
+	Machine, Modules, Objects, Commands, Options, ProcessInfo, Kernel, Streams, Dates, Strings, Plugins, Files, SystemVersion, Heaps, Reflection;
 
 CONST
 	MaxTimers = 16;
@@ -212,6 +212,28 @@ BEGIN
 	context.out.Ln;
 END IsLoaded;
 
+PROCEDURE ModuleState*(context: Commands.Context);
+VAR name: Modules.Name; module: Modules.Module; msg: ARRAY 256 OF CHAR; res: LONGINT;
+BEGIN	
+	context.arg.SkipWhitespace;
+	context.arg.String(name);
+	module := Modules.ThisModule(name, res, msg);
+	context.result := res;
+	IF (res = Modules.Ok) THEN
+		context.out.String(name); context.out.String(" state: "); context.out.Ln;
+		Reflection.ModuleState(context.out, module);
+	ELSE
+		context.error.String("Could not load module "); context.error.String(name);
+		context.error.String(", res: "); context.error.Int(res, 0);
+		IF (msg # "") THEN
+			context.error.String(" ("); context.error.String(msg); context.error.String(")");
+		END;
+		context.error.Ln;
+	END;
+	
+END ModuleState;
+
+
 (** Load the specified module *)
 PROCEDURE Load*(context : Commands.Context); (** modulename ~ *)
 VAR name : Modules.Name; module : Modules.Module; msg : ARRAY 256 OF CHAR; res : LONGINT;
@@ -731,3 +753,5 @@ SystemTools.CollectGarbage ~
 
 SystemTools.ListModules -r ~
 
+SystemTools.ModuleState Heaps ~
+